Сохраните массив из массива массивов при каком-либо условии - PullRequest
0 голосов
/ 01 августа 2020

У меня есть массив массивов, и я хочу сохранить все записи, последний элемент которых равен нулю. Как я могу это сделать? У меня есть что-то вроде этого.

array([[-0.88420819, -1.01983669,  1.12353698, ..., -2.18137332,
         1.12353698,  3.        ],
       [ 0.55632749, -1.97404661,  0.79290805, ..., -0.83084723,
         0.79290805,  0.        ],
       [-1.17401272, -3.25402615, -1.55695256, ..., -1.08043287,
        -1.55695256,  0.        ]

, поэтому я хочу сохранить вторую и третью запись.

Ответы [ 4 ]

1 голос
/ 01 августа 2020

Вы можете использовать Условные выражения в понимании списка .

old_array = [
  [-0.88420819, -1.01983669, 1.12353698, -2.18137332, 1.12353698,  3],
  [ 0.55632749, -1.97404661, 0.79290805, -0.83084723, 0.79290805, 0],
  [-1.17401272, -3.25402615, -1.55695256, -1.08043287, -1.55695256,  0]
]

new_array = [x for x in old_array if x[-1] == 0]

print(new_array)

# output:
# [[0.55632749, -1.97404661, 0.79290805, -0.83084723, 0.79290805, 0],
# [-1.17401272, -3.25402615, -1.55695256, -1.08043287, -1.55695256, 0]]
0 голосов
/ 01 августа 2020

Без обхода других ответов NumPy:

>>> a[a[:,-1] == 0]
array([[0.55632749, -1.97404661, 0.79290805, Ellipsis, -0.83084723,
        0.79290805, 0.0],
       [-1.17401272, -3.25402615, -1.55695256, Ellipsis, -1.08043287,
        -1.55695256, 0.0]], dtype=object)
0 голосов
/ 01 августа 2020

Если вы хотите сохранить его в новую переменную, вы можете сделать:

saved_array = []
for x in given_array:
    if x[-1] == 0:
        saved_array.append(x)

Альтернативная короткая форма будет:

saved_array = list(filter(lambda x: x[-1]==0, given_array))
0 голосов
/ 01 августа 2020

Самый простой и практичный способ - использовать понимание списка и создать новый список. После этого вы можете преобразовать его обратно в массив.

замените arr своим именем массива

arr = [[-0.88420819, -1.01983669,  1.12353698, -2.18137332,
         1.12353698,  3.        ],
       [ 0.55632749, -1.97404661,  0.79290805, -0.83084723,
         0.79290805,  0.        ],
       [-1.17401272, -3.25402615, -1.55695256, -1.08043287,
        -1.55695256,  0.        ]]

res = [val for val in arr if val[-1] == 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...