Как создать numpy массив представлений для других numpy массивов - PullRequest
0 голосов
/ 22 января 2020

У меня большой список объектов, которые включают numpy массивы в качестве атрибутов. У каждого из них есть методы, которые манипулируют массивом. Я хотел бы создать один массив 2D numpy, в котором будут храниться другие массивы и обновления при манипуляциях с отдельными массивами numpy.

Это легко сделать sh со списками, так как вам просто нужно создайте список ссылок на другие списки.

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> z = [x,y] # stores reference to x and y
>>> x[0] = 10
>>> z
[[10,2,3],[4,5,6]]

Однако, делая то же самое в numpy, создаются копии объекта.

>>> x = np.array([1,2,3])
>>> y = np.array([4,5,6])
>>> z = np.array([x,y])  # setting the optional argument copy = False didn't help either
>>> id(x)
140673084678272
>>> id(z[0])
140673084678512

Я догадался, что настройка copy = False не будет работать, потому что я передаю новый объект составного списка, которого раньше не было. Есть ли способ создать z, где его элементы являются ссылками на numpy массивы x и y?

Я понимаю, что ссылки в numpy обычно выполняются с views, но это, кажется, другой вариант использования. Создать объект представления из одного numpy массива довольно просто, но я не уверен, как сохранить в массиве numpy N объектов просмотра из N отдельных numpy массивов.

1 Ответ

0 голосов
/ 22 января 2020

Одним из решений было бы использование массивов stack () или concatenate () в определенных измерениях. если dims не совпадают - используйте отступы, сохраняйте размеры в отдельном списке и затем складывайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...