Python объединить 2D массив в новый список, если условие выполнено - PullRequest
0 голосов
/ 27 февраля 2020

Допустим, у меня есть массив:

print(arr1.shape)
(188621, 10)

И в n-м столбце (скажем, 4 для этого примера) я хочу проверить, когда значение превышает пороговое значение, т.е. Я хочу создать новый список (из x экземпляров) всей строки arr1, когда i-я итерация 4-го столбца выше порога t. Другими словами, он извлекает i-ю строку из arr1, когда выполняется условие в 4-м столбце. Пока что у меня есть:

arr2 = []

for i in range(0,len(arr1)):
   if arr1[i,4] > t:
      arr2.append(arr1[i,:])

Я также пробовал что-то вроде:

for i in range(0,len(arr1)):
   if arr1[i,4] > t:
      if len(arr2) == 0:
         arr2 = arr1[i,:]
      else:
         arr2 = np.concatenate((arr2,arr1[i,:]))

Однако оба экземпляра кажутся растущий в 1D с точки зрения x * 10 вместо 2D списка (x, 10) при выполнении условий. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 27 февраля 2020

Ну, это было не так сложно.

arr2 = arr1 [np.logical_not (arr1 [:, 4]

...