У меня большой список объектов, которые включают 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 массивов.