我尝试两个在python中实现以下问题
我有两个1D numpy数组,其中包含从0到gridsize-1的索引(称它们为i1、i2)。 我还有一个包含数据的一维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函数可以做到这一点?在
谢谢你, 迈克尔
我将假设一些你的问题中不完全清楚的事情。在
arr
是二维形状:(gridsize, gridsize)
i1
i2
和{考虑到这些条件,您可以相当直接地使用numpy的integer array indexing直接使用}直接对
i1
和{arr
进行切片,并将d
分配给该切片:相关问题 更多 >
编程相关推荐