【问题标题】:Calculate mean of each 2d array in a numpy array计算numpy数组中每个二维数组的平均值
【发布时间】:2020-12-09 10:48:45
【问题描述】:

我有一个如下的 numpy 数组:

b = numpy.array([[[1,2,3], [4,5,6]], [[1,1,1],[3,3,3]]])
print(b)
[[[1 2 3]
  [4 5 6]]

 [[1 1 1]
  [3 3 3]]]

现在我不想计算数组中每个二维数组的平均值。例如

numpy.mean(b[0])
>>> 3.5
numpy.mean(b[1])
>>> 2.0

如何在不使用 for 循环的情况下做到这一点?

【问题讨论】:

标签: python python-3.x numpy multidimensional-array numpy-ndarray


【解决方案1】:

np.mean()可以接受轴的参数,所以根据你的使用情况,你可以做以下任一操作

print("Mean of each column:")
print(x.mean(axis=0))
print("Mean of each row:")
print(x.mean(axis=1))

【讨论】:

  • 对此进行扩展:0 的轴是行,1 是列。您遍历行以计算每列的总和,并遍历列以计算每行的总和,这就是您获得上述代码的方式。
【解决方案2】:

我认为这会给你预期的输出

通过在axis - see doc for more about axis param 中传递 multi-dim

b.mean(axis=(1,2))
array([3.5, 2. ])

【讨论】:

  • 跳过循环。在 numpy 数组上循环这样的操作是没有意义的
  • 谢谢。这正是我一直在寻找的。我了解 FOR 循环,但您能解释一下您描述的第一个解决方案吗?
  • @PaulH 是的,删除它。
  • @SaqibAli 它将在通过时对多个暗淡执行均值。
猜你喜欢
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2013-03-27
相关资源
最近更新 更多