Python 两个numpy阵列上的快速迭代
我正在尝试用python实现以下问题 我有两个1D numpy数组,包含从0到gridsize-1的索引(称为i1,i2)。 我还有一个带有数据的1D numpy数组(称为d)。 所有三个数组都具有相同的长度 带有索引的数组可以包含一个特定的索引对(称之为s1、s2) 多次 现在我需要两个将数据数组映射到2D数组(称为arr)以绘制它。 对于那些多次出现的索引对,我想取对应于这些索引的数据项的平均值 我尝试了以下代码(没有平均值) 到目前为止,代码仍在运行,但速度非常慢(阵列大小约为2秒,这是不可接受的) 有没有加快速度的建议? 我认为问题在于数组中单个元素的访问。是否有一个内置的numpy函数来实现这一点 谢谢,,Python 两个numpy阵列上的快速迭代,python,python-3.x,numpy,Python,Python 3.x,Numpy,我正在尝试用python实现以下问题 我有两个1D numpy数组,包含从0到gridsize-1的索引(称为i1,i2)。 我还有一个带有数据的1D numpy数组(称为d)。 所有三个数组都具有相同的长度 带有索引的数组可以包含一个特定的索引对(称之为s1、s2) 多次 现在我需要两个将数据数组映射到2D数组(称为arr)以绘制它。 对于那些多次出现的索引对,我想取对应于这些索引的数据项的平均值 我尝试了以下代码(没有平均值) 到目前为止,代码仍在运行,但速度非常慢(阵列大小约为2秒,这是不
迈克尔在你的问题中,我将假设一些不完全清楚的事情
是二维形状:arr
(gridsize,gridsize)
i1
和i2
都是一维的,长度相同d
i1
和i2
直接切片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
请在代码中正确地重新定义变量。您的代码中没有
d
,那么d.size
应该是什么意思?你写的代码到目前为止还有效。然后plz发布最小工作代码。您在for循环中的索引错误,我编辑了代码。如果定义了数组d、i1、i2,这是最简单的工作示例。我认为这种索引[a,b]比使用[a][b]索引来提取单个元素要快。我的意思是说,发布需要2秒的最小完整工作代码。编辑的代码不好<代码>d,i1
,i2
都未定义。此外,arr
是一个形状数组(1000000,)
。在for
循环中,您将得到索引器错误:数组的索引太多
@Bazingaa这就是为什么假设d
为一维是的,它起作用了。回答这些你/我们必须做作业的问题真的很烦人。我承认,如果你还不是numpy ninja的话,找到正确的谷歌关键词来处理“numpy integer array indexing”可能有点困难。在大多数情况下,只需在谷歌上搜索错误信息就足够了。
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