我想创建一个二维numpy数组,它的每一行都有不同数量的元素。
正在尝试
cells = numpy.array([[0,1,2,3], [2,3,4]])
给出一个错误
ValueError: setting an array element with a sequence.
发布于 2010-08-02 17:16:31
虽然Numpy知道任意对象的数组,但它针对具有固定维数的同构数字数组进行了优化。如果你真的需要数组的数组,最好使用嵌套列表。但根据数据的预期用途,不同的数据结构可能更好,例如,如果您有一些无效的数据点,则使用掩码数组。
如果你真的想要灵活的Numpy数组,使用下面这样的东西:
numpy.array([[0,1,2,3], [2,3,4]], dtype=object)
然而,这将创建一个一维数组来存储对列表的引用,这意味着您将失去Numpy的大部分好处(向量处理、局部性、切片等)。
发布于 2017-04-18 12:01:08
我们现在已经是问题提出近7年了,你的代码
cells = numpy.array([[0,1,2,3], [2,3,4]])
在numpy 1.12.0,Python3.5中执行,不会产生任何错误,cells
包含:
array([[0, 1, 2, 3], [2, 3, 4]], dtype=object)
您可以将cells
元素作为cells[0][2] # (=2)
进行访问。
如果您想在新元素(即数组)可用时动态构建numpy数组列表,则可以使用append
替代tom10's solution
d = [] # initialize an empty list
a = np.arange(3) # array([0, 1, 2])
d.append(a) # [array([0, 1, 2])]
b = np.arange(3,-1,-1) #array([3, 2, 1, 0])
d.append(b) #[array([0, 1, 2]), array([3, 2, 1, 0])]
发布于 2010-08-03 03:02:26
这在Numpy中没有得到很好的支持(根据定义,几乎在任何地方,“二维数组”的所有行的长度都是相等的)。一个Numpy数组的Python列表可能是一个很好的解决方案,因为通过这种方式,您可以在使用它们的地方获得Numpy的优势:
cells = [numpy.array(a) for a in [[0,1,2,3], [2,3,4]]]
https://stackoverflow.com/questions/3386259
复制相似问题