我在2D ndarray中有一个值列表列表(其中每个值列表的长度相同)。 实施例
[[0,1,0],
[0,1,0],
[0,1,0],
[1,0,1],
[1,0,1]]
我想执行一个平均列的操作,如果平均值大于.5则返回。我怎么能在numpy中实现这个目标?
我知道我可以使用
for i in range(len(vectors[0])):
cur_vals = []
for j in range(len(vectors)):
cur_vals.append(vectors[j][i])
col_operation(cur_vals)
但是我被告知numpy提供类似于R的实用程序来执行此操作,所以我正在寻找它。
答案 0 :(得分:0)
您可以指定.mean()
的轴参数:
In [180]: a
Out[180]:
array([[0, 1, 0],
[0, 1, 0],
[0, 1, 0],
[1, 0, 1],
[1, 0, 1]])
In [194]: a.mean(axis=0)
Out[194]: array([ 0.4, 0.6, 0.4])
现在生成一个像这样的布尔掩码:
In [195]: a.mean(axis=0) > .5
Out[195]: array([False, True, False], dtype=bool)
获取平均值为>的列.5,使用布尔索引:
In [196]: a.T[a.mean(axis=0) > .5] # you'll need the transpose first
Out[196]: array([[1, 1, 1, 0, 0]])