将点列表转换为numpy 2D数组

fog*_*rit 8 python numpy

我正在使用genfromtxt来导入一个二维数组,该数组的所有值都列在表单的文本文件中(x和y是整数):

    x1   y1   z1
    x2   y2   z2
    :    :    :
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的for循环,但我很确定必须采用一行方式来实现它.什么是更有效的方式来进行这种转换?

raw = genfromtxt(file,skip_header = 6)

xrange = ( raw[:,0].min() , raw[:,0].max() )
yrange = ( raw[:,1].min() , raw[:,1].max() )

Z = zeros(( xrange[1] - xrange[0] +1 , yrange[1] - yrange[0] +1 ))

for row in raw:
    Z[ row[0]-xrange[0] , row[1]-yrange[0] ] = row[2]
Run Code Online (Sandbox Code Playgroud)

jor*_*ris 3

您可以将 for 循环替换为以下内容:

xidx = (raw[:,0]-xrange[0]).astype(int)
yidx = (raw[:,1]-yrange[0]).astype(int)

Z[xidx, yidx] = raw[:,2]
Run Code Online (Sandbox Code Playgroud)