Подмножество одного столбца относительно значений в другом столбце - PullRequest
0 голосов
/ 26 января 2019

Я прочитал множество постов в интернете о нарезке массива, однако ни один из них не отвечает на мой вопрос.

У меня есть массив с тремя столбцами, например, A, B и Y. И все значениялибо 1, либо 0. Я хочу узнать результирующие значения Y, если применить фильтр к столбцу A, т. е. если A == 0, то какие значения Y я получу.

Например,здесь массив NumPy

A  B  Y
0  0  1
1  0  0
0  0  1
0  0  0

, поэтому, если я выберу A = 0, то Y станет 1,1,0.

Я был бы очень признателен, если бы кто-нибудь показал мне, как это сделать (используя этот пример), когда результат одного столбца зависит от значений в другом столбце.

1 Ответ

0 голосов
/ 26 января 2019

Вы можете индексировать по строке и столбцу одновременно.Используйте логическое индексирование в первом измерении, целочисленный индекс во втором измерении:

A = np.array([[0, 0, 1],
              [1, 0, 0],
              [0, 0, 1],
              [0, 0, 0]])

B = A[A[:, 0] == 0, 2]   # array([1, 1, 0])
B = A[A[:, 0] == 0, -1]  # equivalent solution, negative indices supported

Метки уведомлений, такие как A, B, Y, не существуют с обычными массивами NumPy.Для выбора конкретной строки или столбца используйте integer indexes, отметив, что первая строка или столбец имеет индекс 0.A[:, 0] == 0 возвращает логический массив, который используется для фильтрации первого измерения (строк).

...