Как извлечь всю строку и столбцы при выполнении условия в массиве numpy - PullRequest
0 голосов
/ 29 мая 2018

У меня есть числовой массив в этой форме:

array([['A', 2.2, 9.1],
   ['A', 7.1, 2.3],
   ['B', 4.1, 1.1]],dtype=object)

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

form = array([['A', 2.2, 9.1],
              ['A', 7.1, 2.3],dtype=object)

Я пытался использовать j = form[np.where(form == 'A')]

, что дает array(['A', 'A'], dtype=object).Это не то, что я хочу.

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 29 мая 2018

Быстрый и грязный путь:

import numpy as np
form = np.array([row for row in form_original if row[0] == "A"])
0 голосов
/ 29 мая 2018

Попробуйте создать понимание списка, затем в нем итерируем по длине test, затем проверяем, есть ли в списке 'A', является ли элемент с индексом i:

import numpy as np
test = np.array([['A', 2.2, 9.1],
   ['A', 7.1, 2.3],
   ['B', 4.1, 1.1]],dtype=object)
print(test[[i for i in range(len(test)) if 'A' in test[i]]])

Выход:

[['A' 2.2 9.1]
 ['A' 7.1 2.3]]
0 голосов
/ 29 мая 2018

Вы можете избежать использования where, например, так:

form = np.array([['A', 2.2, 9.1],
             ['A', 7.1, 2.3],
             ['B', 4.1, 1.1]])

print(form[form[:,0] == 'A'])

# [['A' 2.2 9.1] 
#  ['A' 7.1 2.3]]
0 голосов
/ 29 мая 2018

Вы можете нарезать массив при использовании np.where(), чтобы использовался только этот первый столбец:

form = np.array([['A', 2.2, 9.1],
   ['A', 7.1, 2.3],
   ['B', 4.1, 1.1]],dtype=object)

j = form[np.where(form[:,0]=='A')]
print (j)
# [['A' 2.2 9.1]
#  ['A' 7.1 2.3]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...