我有一个(2x3)光栅文件,其值如下:
-5-6
-4-5
-1-2通常,.xyz GIS文件格式将由以下numpy数组表示的列组成:(坐标位于左下角)
col = numpy.array([[0,0,-1],[1,0,-2],[0,1,-3],[1,1,-4],[0,2,-5],[1,2,-6]]) 不幸的是,我有一个有组织的行结构(来自https://www.opengeodata.nrw.de/的数据)。它可以由以下numpy数组表示:
row = numpy.array([[0,0,-1],[0,1,-3],[0,2,-5],[1,0,-2],[1,1,-4],[1,2,-6]])
print (row)
[[ 0 0 -1]
[ 0 1 -3]
[ 0 2 -5]
[ 1 0 -2]
[ 1 1 -4]
[ 1 2 -6]]我需要将这个行数组重新排列成一个col数组。我目前正在使用以下代码:
rr = row.reshape(2,3,3)
stack = numpy.column_stack(rr[:,:,:])
new_col =(stack.reshape(-1,3))
print (new_col)
[[ 0 0 -1]
[ 1 0 -2]
[ 0 1 -3]
[ 1 1 -4]
[ 0 2 -5]
[ 1 2 -6]]这是可行的,但我的问题是:这是处理数组转换的最佳方法吗?我很少有操作numpy数组的经验。谢谢尼古拉斯
发布于 2020-11-17 05:22:26
您可以使用转座子方法重新排列轴。
import numpy
col = numpy.array([[0,0,-1],[1,0,-2],[0,1,-3],[1,1,-4],[0,2,-5],[1,2,-6]])
row = numpy.array([[0,0,-1],[0,1,-3],[0,2,-5],[1,0,-2],[1,1,-4],[1,2,-6]])
# New solution
new_col = row.reshape(2,3,3).transpose(1,0,2).reshape(-1,3)
print(numpy.array_equal(col, new_col))它比使用column_stack或hstack的速度更快。
发布于 2020-11-17 05:21:29
我认为你做的很好,但为了可读性,我会用
stack = numpy.hstack(rr)
而不是
stack = numpy.column_stack(rr[:,:,:])
https://stackoverflow.com/questions/64869499
复制相似问题