2017-07-18 102 views
1

我试图用一堆列表填充二维数组。我知道我可以将它视为一个3D数组,并且访问数据的方式完全相同,但出于我的目的,我真的更喜欢将它当作一个二维数组,而数组以列表作为元素而不是数字。守则用列表填充二维数组

一个变种我已经试过:

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中,我会用指向要填充的数据的指针填充该二维数组,但我不知道如何在python中做类似的事情。所以,现在

a = np.empty([2, 2],dtype=object)

我们引用的二维数组,所有设置为None,如:

回答

1

您可以在阵列的类型设置为dtype=object

>>> 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矩阵。

+0

numpy把它们当作黑匣子就好了,因为我的用例就是那种想要的行为。 –