2024-03-28 21:05:29 发布
网友
我想创建一个二维numpy数组,其中每行有不同数量的元素。
尝试
cells = numpy.array([[0,1,2,3], [2,3,4]])
出现错误
ValueError: setting an array element with a sequence.
我们现在离问这个问题已经快7年了,还有你的代码
在numpy 1.12.0和python 3.5中执行,不会产生任何错误,并且 cells包含:
cells
array([[0, 1, 2, 3], [2, 3, 4]], dtype=object)
您可以将cells元素作为cells[0][2] # (=2)访问。
cells[0][2] # (=2)
如果您想在新元素(即数组)可用时动态构建numpy数组列表,那么可以使用append:
append
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])]
虽然Numpy知道任意对象的数组,但它对具有固定维度的同构数组进行了优化。如果您真的需要数组,最好使用嵌套列表。但是,根据数据的预期用途,不同的数据结构可能更好,例如,如果有一些无效的数据点,则使用屏蔽数组。
如果您真的需要灵活的Numpy数组,请使用以下方法:
numpy.array([[0,1,2,3], [2,3,4]], dtype=object)
然而,这将创建一个一维数组来存储对列表的引用,这意味着您将失去Numpy的大部分好处(向量处理、局部性、切片等)。
这在Numpy中不太受支持(根据定义,几乎在任何地方,“二维数组”的所有行都是等长的)。Numpy数组的Python列表可能是一个很好的解决方案,因为这样您就可以获得Numpy的优点,在这里您可以使用它们:
cells = [numpy.array(a) for a in [[0,1,2,3], [2,3,4]]]
我们现在离问这个问题已经快7年了,还有你的代码
在numpy 1.12.0和python 3.5中执行,不会产生任何错误,并且
cells
包含:您可以将
cells
元素作为cells[0][2] # (=2)
访问。如果您想在新元素(即数组)可用时动态构建numpy数组列表,那么可以使用
append
:虽然Numpy知道任意对象的数组,但它对具有固定维度的同构数组进行了优化。如果您真的需要数组,最好使用嵌套列表。但是,根据数据的预期用途,不同的数据结构可能更好,例如,如果有一些无效的数据点,则使用屏蔽数组。
如果您真的需要灵活的Numpy数组,请使用以下方法:
然而,这将创建一个一维数组来存储对列表的引用,这意味着您将失去Numpy的大部分好处(向量处理、局部性、切片等)。
这在Numpy中不太受支持(根据定义,几乎在任何地方,“二维数组”的所有行都是等长的)。Numpy数组的Python列表可能是一个很好的解决方案,因为这样您就可以获得Numpy的优点,在这里您可以使用它们:
相关问题 更多 >
编程相关推荐