【发布时间】:2022-01-19 16:18:29
【问题描述】:
我的 numpy 对象为:
[array([1, 1, 1]) array([2, 2, 2])
array([3, 3, 3]) array([4, 4, 4])
array([5, 5, 5]) array([6, 6, 6])]
我的目标是获取所有子数组中平均值的列表/数组,即获取列表 [1 2 3 4 5 6]。
我得到了 np.mean 和 np.average: [3.5 3.5 3.5] 这是所有第一个、所有第二个、所有第三个元素的平均值。
我尝试添加一个参数axis=1,但随后出现错误:
avg = a.mean(axis)
File "---/numpy/core/_methods.py", line 138, in _mean
rcount = _count_reduce_items(arr, axis)
File "---/numpy/core/_methods.py", line 57, in _count_reduce_items
items *= arr.shape[ax]
IndexError: tuple index out of range
我尝试将我的对象转换为 np.array 但这没有任何区别。
正如我所评论的,这是我的问题的最小重现:
import numpy as np
A = np.zeros((2,2), dtype=object)
A[0][0] = np.append(A[0][0], np.array([1]))
A[0][1] = np.append(A[0][1], np.array([2]))
print(np.array(A[0,:]).mean()) # ok
print(np.array(A[0,:]).mean(axis=0)) # ok
np.array(A[0,:]).mean(axis=1) # bad
【问题讨论】:
-
np.mean(l, axis=1)在 numpy 1.21.2 上返回正确答案array([1,2,3,4,5,6])。你也可以试试np.array(l).mean(axis=1)。 -
又是同样的错误
-
你的 numpy 对象到底是什么,你用
type(l)得到什么? -
<class 'numpy.ndarray'>请查看我关于如何报告错误的评论 -
如前所述,
np.array(list(A[0,:])).mean(axis=1)应该适合您。