Numpy delete () удаляет разные массивы с одинаковыми элементами из 2D-массива - PullRequest
0 голосов
/ 21 октября 2019

У меня есть двумерный массив, например B = [[1. 0.], [0. 1.], [3. 1.]], и я хочу удалить [0. 1.], но когда я это сделаю:

B = np.delete(B, [0, 1], 0)
print(B)

, оба [1. 0.], [0. 1.] удаляются, и у меня остается
[[3. 1.]]

таким образом, я полагаю, delete() не распознает разные массивы с одинаковыми элементами. Что я могу сделать?

Ответы [ 3 ]

3 голосов
/ 21 октября 2019

Вы просите delete () удалить первый и второй индекс, указав в качестве параметра [0,1]. Этот второй араметр является индексом, из которого вы хотите удалить значение. Вы должны попробовать:

np.delete(B, 1, 0)
0 голосов
/ 21 октября 2019

Удаление по значению:

B = np.array([[1., 0.], [0., 1.], [3., 1.]])
value = [3,1]

1) Сохраняя все остальное (рекомендуется):

B[(value!=B).any(1)]
# array([[1., 0.],
#        [0., 1.]])

2) Использование delete:

np.delete(B,np.where((value==B).all(1)),0)
# array([[1., 0.],
#        [0., 1.]])
0 голосов
/ 21 октября 2019

np.delete(arr, idx) удаляет элементы в местах, указанных в idx

, поэтому

B = np.delete(B, [0, 1], 0)

удаляет элементы в местах 0 и 1, которые являются упомянутыми вами элементами, [1. 0.] и [1. 0.]

, поэтому для удаления определенного массива из 2D-массива необходимо знать индекс элемента, который вы хотите удалить. Вы можете сделать один уродливый лайнер, как это

B = np.delete(B, np.where((B==[0,1]).all(1)), 0)
...