两个numpy阵列的快速迭代

2024-05-19 19:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试两个在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函数可以做到这一点?在

谢谢你, 迈克尔


Tags: 数据代码numpyindex绘制数组array平均值
1条回答
网友
1楼 · 发布于 2024-05-19 19:28:36

我将假设一些你的问题中不完全清楚的事情。在

  • arr是二维形状:(gridsize, gridsize)
  • i1i2和{}都是一维的,长度相同

考虑到这些条件,您可以相当直接地使用numpy的integer array indexing直接使用i1和{}直接对arr进行切片,并将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

相关问题 更多 >