使用列表填充2D数组

时间:2017-07-18 11:04:23

标签: python arrays python-2.7 numpy

我试图用一堆列表填充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中做类似的事情。

1 个答案:

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

相关问题