【发布时间】:2017-08-12 08:14:10
【问题描述】:
给定以下numpy 数组:
import numpy
a=numpy.array([[1,1,1],[1,1,1],[1,1,1]])
b=numpy.array([[2,2,2],[2,2,2],[2,2,2]])
c=numpy.array([[3,3,3],[3,3,3],[3,3,3]])
还有这本包含所有内容的字典:
mydict={0:a,1:b,2:c}
迭代mydict 以计算以(1+2+3)/3=2 为值的平均numpy 数组的最有效方法是什么?
我的尝试失败了,因为我给它太多的值来解压。它也非常低效,因为它的时间复杂度为O(n^3):
aver=numpy.empty([a.shape[0],a.shape[1]])
for c,v in mydict.values():
for i in range(0,a.shape[0]):
for j in range(0,a.shape[1]):
aver[i][j]=mydict[c][i][j] #<-too many values to unpack
最终结果应该是:
In[17]: aver
Out[17]:
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
编辑
我不是在寻找每个 numpy 数组的平均值。我正在寻找我的 numpy 数组集合中每个元素的平均值 。这是一个最小的示例,但我正在处理的实际工作是每个数组有超过 120,000 个元素,并且对于相同的位置,值会从数组变为数组。
【问题讨论】:
-
for c,v in mydict.values():应该是for c,v in mydict.items(): -
@JamesR 好好看看那个 :)
-
我想你只是想要像
arr.mean(axis=1)这样的东西 -
您到底在寻找什么?你的输出是什么?为什么这些数组在字典中?
-
说来话长。气候数据...
标签: python arrays numpy dictionary for-loop