python: выбор строки, где y == 1 и столбец 0 в матрице - PullRequest
0 голосов
/ 03 июля 2018

Я новичок в питоне. Это мой код:

np.random.seed(42)
x1=np.random.randn(5,4)
y1=np.random.randint(0,2,(5,1))
print(x1)
print(y1)

Я хочу выбрать столбец 1 x1 и строки, где y равен 1:

print(x1[y1==1, 1])

но я получаю ошибку too many indices for array

1 Ответ

0 голосов
/ 03 июля 2018

Вам нужно 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...