Как получить указанную позицию массива c после условия numpy .where? - PullRequest
0 голосов
/ 09 июля 2020

Я использую условие where к моему массиву и возвращаю позицию массива array_string [0,0] с 'A', но мне нужна позиция array_string [0,1] с 200.

array_string = np.array([['A', 200],['B', 100]])

array_string[ np.where( array_string == 'A' ) ]

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Это происходит потому, что np.where возвращает индексы для каждого измерения, в котором был найден элемент.

array_string = np.array([['A', 200], ['B', 100]])

rows_found, cols_found = np.where(array_string == 'A')
rows = array_string[rows_found]  # returns [['A', 200]]
print(rows[0][1])  # prints 200


# Another example
array_string = np.array([['A', 200], ['B', 100], ['A', 500]])

rows_found, cols_found = np.where(array_string == 'A')
rows = array_string[rows_found]  # returns [['A' 200], ['A' 500]]
print(rows[:, 1])  # prints [200, 500]
0 голосов
/ 09 июля 2020

Прежде всего, нет необходимости использовать np.where. Во-вторых, вы можете получить желаемый ответ следующим образом:

array_string[array_string[0,:]=='A', :]

> array([['A', '200']], dtype='<U3')

В переводе на человеческий язык: проверьте первую строку во всех столбцах, и, если она равна A, получите мне всю строку (все столбцы этой строки).

...