python:在矩阵中选择y == 1且列为0的行

时间:2018-07-03 08:26:08

标签: python arrays python-3.x numpy indexing

我是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

1 个答案:

答案 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))