当尺寸相同时,numpy mean函数完全正常。
a = np.array([[1, 2], [3, 4]])
a.mean(axis=1)
array([ 1.5, 3.5])
但是,如果我使用变量行大小来执行此操作,则会出现错误
a = np.array([[1, 2], [3, 4, 5]])
a.mean(axis=1)
IndexError: tuple index out of range
我在文档中找不到有关此问题的任何内容。我可以自己计算平均值但是我想在这里使用build in函数,看它应该是可能的。
答案 0 :(得分:1)
这是一种方法 -
grvCustomer.FirstDisplayedScrollingRowIndex = IndexRow;
示例运行 -
# Store length of each subarray
lens = np.array(map(len,a))
# Generate IDs based on the lengths
IDs = np.repeat(np.arange(len(lens)),lens)
# Use IDs to do bin-based summing of a elems and divide by subarray lengths
out = np.bincount(IDs,np.concatenate(a))/lens
使用列表理解的更简单的替代方法 -
In [34]: a # Input array
Out[34]: array([[1, 2], [3, 4, 5]], dtype=object)
In [35]: lens = np.array(map(len,a))
...: IDs = np.repeat(np.arange(len(lens)),lens)
...: out = np.bincount(IDs,np.concatenate(a))/lens
...:
In [36]: out # Average output
Out[36]: array([ 1.5, 4. ])