Подмножество одного столбца относительно значений в другом столбце
Я прочитал множество постов в интернете о нарезке массива, однако ни один из них не отвечает на мой вопрос.
У меня есть массив с тремя столбцами, скажем, 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 ответ
Вы можете индексировать по строке и столбцу одновременно. Используйте логическое индексирование в первом измерении, целочисленный индекс во втором измерении:
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. Для выбора конкретной строки или столбца используйте целочисленные индексы, отметив, что первая строка или столбец имеет индекс 0
, A[:, 0] == 0
возвращает логический массив, который используется для фильтрации первого измерения (строк).