我是python的新手。这是我的代码:
np.random.seed(42)
x1=np.random.randn(5,4)
y1=np.random.randint(0,2,(5,1))
print(x1)
print(y1)
我要选择x1的列1和y为1的行:
print(x1[y1==1, 1])
但是我遇到错误too many indices for array
答案 0 :(得分:1)
您需要numpy.where
提取一个整数数组以提供NumPy索引:
x1[np.where(y1==1)[0], 1]
要了解其工作原理,请注意y1 == 1
返回以下布尔数组:
array([[ True],
[ True],
[False],
[ True],
[False]], dtype=bool)
numpy.where
提取返回的元组的第一个元素中True
元素的索引:
print(np.where(y1==1))
(array([0, 1, 3], dtype=int64), array([0, 0, 0], dtype=int64))