首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何制作一个行大小可变的多维numpy数组?

如何制作一个行大小可变的多维numpy数组?
EN

Stack Overflow用户
提问于 2010-08-02 16:46:12
回答 7查看 104.7K关注 0票数 71

我想创建一个二维numpy数组,它的每一行都有不同数量的元素。

正在尝试

代码语言:javascript
复制
cells = numpy.array([[0,1,2,3], [2,3,4]])

给出一个错误

代码语言:javascript
复制
ValueError: setting an array element with a sequence.
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-08-02 17:16:31

虽然Numpy知道任意对象的数组,但它针对具有固定维数的同构数字数组进行了优化。如果你真的需要数组的数组,最好使用嵌套列表。但根据数据的预期用途,不同的数据结构可能更好,例如,如果您有一些无效的数据点,则使用掩码数组。

如果你真的想要灵活的Numpy数组,使用下面这样的东西:

代码语言:javascript
复制
numpy.array([[0,1,2,3], [2,3,4]], dtype=object)

然而,这将创建一个一维数组来存储对列表的引用,这意味着您将失去Numpy的大部分好处(向量处理、局部性、切片等)。

票数 44
EN

Stack Overflow用户

发布于 2017-04-18 12:01:08

我们现在已经是问题提出近7年了,你的代码

代码语言:javascript
复制
cells = numpy.array([[0,1,2,3], [2,3,4]])

在numpy 1.12.0,Python3.5中执行,不会产生任何错误,cells包含:

代码语言:javascript
复制
array([[0, 1, 2, 3], [2, 3, 4]], dtype=object)

您可以将cells元素作为cells[0][2] # (=2)进行访问。

如果您想在新元素(即数组)可用时动态构建numpy数组列表,则可以使用append替代tom10's solution

代码语言:javascript
复制
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])]
票数 49
EN

Stack Overflow用户

发布于 2010-08-03 03:02:26

这在Numpy中没有得到很好的支持(根据定义,几乎在任何地方,“二维数组”的所有行的长度都是相等的)。一个Numpy数组的Python列表可能是一个很好的解决方案,因为通过这种方式,您可以在使用它们的地方获得Numpy的优势:

代码语言:javascript
复制
cells = [numpy.array(a) for a in [[0,1,2,3], [2,3,4]]]
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3386259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档