有没有一种有效的numpy机制,可以从一个二维数组生成一个数组的值,并给出该数组的索引列表?
具体地说,我有一个二维坐标列表,它表示二维numpy
数组中感兴趣的值。
nonzeroValidIndices = numpy.where((array2d != noDataValue) & (array2d != 0))
nonzeroValidCoordinates = zip(nonzeroValidIndices[0],nonzeroValidIndices[1])
从这里开始,我通过循环坐标并索引到numpy数组中来构建一个Map,一次一个,类似于下面这个简化的例子:
for coord in nonzeroValidCoordinates:
map[coord] = array2d[coord]
我有几个大规模的数据集,我正在迭代这个算法,所以我对一个有效的解决方案很感兴趣。通过分析,我怀疑array2d[coord]
行造成了一些麻烦。有没有更好的向量形式来从array2d
生成整个向量值,或者我坚持一次索引一个?
3条答案
按热度按时间v6ylcynt1#
不如这样:
你可以使用
np.where
的结果来索引一个数组,就像我上面所展示的那样。这应该可以完成类似于你正在做的事情,而不需要循环,但是我并不完全清楚你的目标二维数组实际上应该是什么。不知道map
是什么,看起来就像你在把数据复制到同样大小的数组中。vtwuwzda2#
是的,当然,您可以将值设为
如果Map是一个新法令,您可以
如果是现有的法令,
如果是数组,则
wgx48brx3#
我觉得你可以试试这样的方法:
或者,如果您确实要使用
nonzeroValidCoordinates
: