首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >行组织光栅文件到列组织光栅文件

行组织光栅文件到列组织光栅文件
EN

Stack Overflow用户
提问于 2020-11-17 04:47:51
回答 2查看 29关注 0票数 1

我有一个(2x3)光栅文件,其值如下:

代码语言:javascript
复制
-5-6
-4-5
-1-2

通常,.xyz GIS文件格式将由以下numpy数组表示的列组成:(坐标位于左下角)

代码语言:javascript
复制
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数组表示:

代码语言:javascript
复制
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数组。我目前正在使用以下代码:

代码语言:javascript
复制
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数组的经验。谢谢尼古拉斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-17 05:22:26

您可以使用转座子方法重新排列轴。

代码语言:javascript
复制
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_stackhstack的速度更快。

票数 1
EN

Stack Overflow用户

发布于 2020-11-17 05:21:29

我认为你做的很好,但为了可读性,我会用

stack = numpy.hstack(rr)

而不是

stack = numpy.column_stack(rr[:,:,:])

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64869499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档