我有两个2D的numpy数组,data
包含了实际的样本数据:
[[12 15 5 0]
[ 3 11 3 7]
[ 9 3 5 2]
[ 4 7 6 8]]
另一个名为location
的数组包含了一个地图,它是一个新的一维数组中唯一、不重叠的整数值对应的二维数组,大小与前两个数组相同:
[[ 5 6 9 10]
[ 4 7 8 11]
[ 3 2 13 12]
[ 0 1 14 15]]
到目前为止,我唯一能够运行传输的方法是使用简单的for循环:
arr = np.zeros(4*4, dtype = int)
for i in range(4):
for j in range(4):
mapval = location[i, j]
arr[mapval] = data[i, j]
正确输出的是[ 4 7 3 9 3 12 15 11 3 5 0 7 2 5 6 8]
这对于简单的4*4数组来说很好,但实际数据集大小为512 * 512,这种方法完成起来需要很长时间。所以我的问题是,是否有任何函数或方法利用ufuncs / numpy的快速处理能力更有效地完成此操作?
arr[location] = data
如何? - Divakar