我试图用一堆列表填充2D数组。我知道我可以将它视为3D数组,并且访问数据完全相同,但出于我的目的,我真的更愿意将其视为2D数组,将列表作为元素而不是数字。
我尝试过的一个代码变体:
import numpy as np
a = np.empty([2, 2])
b = [[1, 2], [3, 4], [5, 6], [7, 8]]
a[0][0] = b[0]
print a[0][0]
我理解为什么它不会那样工作,并且它可以使用3D数组。
在C中我会用指向我要填写的数据的指针填充该2D数组,但我不知道如何在python中做类似的事情。
答案 0 :(得分:1)
您可以将数组类型设置为dtype=object
:
a = np.empty([2, 2],dtype=object)
所以现在我们有一个2d引用数组,都设置为None
,如:
>>> np.empty([2, 2],dtype=object)
array([[None, None],
[None, None]], dtype=object)
接下来,我们可以将一个对象分配给一个元素:
>>> a[0][0] = [[1, 2], [3, 4], [5, 6], [7, 8]]
>>> a
array([[list([[1, 2], [3, 4], [5, 6], [7, 8]]), None],
[None, None]], dtype=object)
请注意,对于numpy,这些对象是黑盒子。所以你不能通过使用几个赋值语句来构造一个3d矩阵,然后计算一些就好像它是一个3d矩阵。