我正在尝试两个在python中实现以下问题
我有两个一维numpy数组,包含从0到gridsize-1的索引(称为i1,i2)。 我也有一个带有数据的1D numpy数组(称为d)。 这三个数组的长度都相同。
具有索引的数组可以包含特定的索引对(称为s1,s2) 多次。
我现在想要两个将数据数组映射到2D数组(称为arr)以进行绘制。 对于那些出现多次的索引对,我想取这些索引对应的数据条目的平均值。
我尝试了以下代码(无平均值)
d #data array
i1 #first 1D numpy index array
i2 #second 1D numpy index array
gridsize = 1000
arr = np.zeros(gridsize**2)
for i in range(d.size):
arr[ i1[i], i2[i] ] = d[i]
到目前为止,代码可以正常运行,但是非常慢(数组大小大约为2s,这是不可接受的) 有什么建议可以加快速度吗? 我建议问题出在数组中各个元素的访问上。可能有内置的numpy函数可以做到这一点吗?
谢谢你, 迈克尔
答案 0 :(得分:0)
我将假设一些在您的问题中并不完全清楚的事情。
arr
是二维的,形状为:(gridsize, gridsize)
i1
i2
和d
均为一维且长度相同鉴于这些条件,您可以直接使用numpy的integer array indexing通过arr
和i1
直接切片i2
并将d
分配给切片:>
d #data array
i1 #first 1D numpy index array
i2 #second 1D numpy index array
gridsize = 1000
arr = np.zeros((gridsize,gridsize))
arr[i1,i2] = d