Удалить элемент из массива 3d numpy - PullRequest
0 голосов
/ 22 октября 2018

Предположим, у меня есть 3d массив numpy:

arr = np.ndarray(shape = (3,3,3), dtype=np.float32)


array([[[2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38]],

   [[2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38]],

   [[2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38]]], dtype=float32)

Я хочу удалить произвольную строку из этого массива.Например, если я хочу удалить первую строку, я хочу получить следующий массив:

array([[[2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38]],

   [[2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38],
    [2.3694278e-38, 2.3694278e-38, 2.3694278e-38]]], dtype=float32)

Но этот вопрос касается не только удаления первой строки.Я хочу иметь возможность удалить строку, которую я хочу.Я попробовал np.delete() функцию, но не смог получить именно то, что я хочу.Может кто-нибудь показать, как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Не использовать np.delete

np.delete создает копию, часто без необходимости.Вместо этого используйте basic slicing , чтобы вернуть представление.Если вы предоставите только один срез, тогда будет разрезано только первое измерение.

arr_sliced = arr[1:]

Вы можете создать копию явно, если хотите:

arr_sliced = arr[1:].copy()
0 голосов
/ 22 октября 2018

Вы можете попробовать:

x = np.delete(arr, 0, axis=0)

первый массив (обр):

   [[[-3.5406988e-10  4.5735579e-41  4.8186282e-38]
  [ 0.0000000e+00 -2.4307778e-10  4.5735579e-41]
  [-2.2672175e-10  4.5735579e-41 -5.2388177e-11]]

 [[ 4.5735579e-41 -1.2597114e-09  4.5735579e-41]
  [-1.2705312e-09  4.5735579e-41 -2.1648838e-10]
  [ 4.5735579e-41 -2.4543772e-19  4.5735579e-41]]

 [[-2.4543917e-19  4.5735579e-41 -6.6015360e-11]
  [ 4.5735579e-41 -2.4544351e-19  4.5735579e-41]
  [-2.4199687e-10  4.5735579e-41 -1.2076065e-09]]]

новый массив (x):

[[[ 4.5735579e-41 -1.2597114e-09  4.5735579e-41]
  [-1.2705312e-09  4.5735579e-41 -2.1648838e-10]
  [ 4.5735579e-41 -2.4543772e-19  4.5735579e-41]]

 [[-2.4543917e-19  4.5735579e-41 -6.6015360e-11]
  [ 4.5735579e-41 -2.4544351e-19  4.5735579e-41]
  [-2.4199687e-10  4.5735579e-41 -1.2076065e-09]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...