#python-3.x #numpy #numpy-ndarray
#python-3.x #numpy #numpy-ndarray
Вопрос:
У меня есть 2-мерный массив, каждый элемент которого представляет собой список допустимых значений (псевдосинтаксис):
[ [1,2] [1,2]
[1,2] [1,2] ]
таким образом, фактически это 3-тусклый массив / список / матрица (независимо от того, что Python называет их.)
Он генерируется
import numpy as np
grid = np.full((borderSize, borderSize, borderSize), range(1, borderSize 1))
Как лучше всего удалить значение из массива на «самом глубоком» уровне?
Pseudocode:
grid = [ [1,2] [1,2]
[1,2] [1,2] ]
grid[0,1].remove(not index but value 2)
#result: grid = [ [1,2] [1]
[1,2] [1,2] ]
Я попробовал все решения, которые смог найти в Google, включая numpy.delete() и array.remove() , любой, какой бы ни был этот синтаксис : arr = arr[ (arr >= 6) amp; (arr <= 10) ]
. Кажется, что все подходы «сглаживают» массив / список / матрицу или выдают загадочные для меня ошибки («не удается преобразовать массив в форму»)
Спасибо!
Ответ №1:
Массивы на самом деле не имеют такого понятия, как «самый глубокий» уровень, у них есть измерения, и каждое измерение должно быть определено глобально. Вы можете изменить свой массив на список, а затем удалить элемент следующим образом:
grid = np.array([ [1,2], [1,2],
[1,2], [1,2] ])
grid = grid.tolist()
del grid[1][1]
grid
Результат:
[[1, 2], [1], [1, 2], [1, 2]]
но вы не можете сделать это в массиве.
Комментарии:
1. Спасибо! Быстрая проверка работоспособности: я не могу преобразовать этот список обратно в массив, поскольку не каждый «элемент» имеет одинаковое количество элементов — правильно?
2. да, массивы должны иметь определенные размеры. вы можете увидеть размер вашего массива, набрав grid.shape