Python如何在数组中创建数组?

时间:2017-03-25 16:15:05

标签: python arrays list numpy types

我有一个numpy数组Z1,Z2,Z3:
Z1 = [1,2,3]
Z2 = [4,5]
Z3 = [6,7,8,9]
我想要新的numpy数组Z,其Z1,Z2,Z3为数组,如:
Z = [[1,2,3],[4,5],[6,7,8,9]
print(type(Z),type(Z[0]))
>>> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
我使用了np.append,hstack,vstack,insert,concatenate ......但是我都失败了 只有2个案例:
Z = [1,2,3,4,5,6,7,8,9]
或错误
所以我首先列出了一个列表Z,然后追加列表Z1,Z2,Z3,然后将列表Z转换为numpy数组Z.

Z = [[1,2,3],[4,5],[6,7,8,9]]
print(type(Z),type(Z[0]))
>>> <class 'numpy.ndarray'> <class 'list'>

我想不要使用'while'或'for'。请帮帮我..

4 个答案:

答案 0 :(得分:1)

尝试

import numpy as np

Z1 = [1,2,3]
Z2 = [4,5]
Z3 = [6,7,8,9]

Z = np.array([Z1, Z2, Z3])
print(Z)
print(type(Z))

这会将您的列表列表转换为numpy数组

答案 1 :(得分:1)

首先,Z是一个列表清单:

In [33]: Z = [[1,2,3], [4,5], [6,7,8,9]]

这是一个列表数组 - 请注意dtype。但请记住,np.array([[1,2,3],[4,5,6]])将生成dtype int的二维数组。

In [34]: np.array(Z)
Out[34]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object)

创建对象dtype数组的最可靠方法,给定形状是初始化它,然后填充它:

In [35]: out = np.zeros((3,), dtype=object)
In [36]: out[...] = Z
In [37]: out
Out[37]: array([[1, 2, 3], [4, 5], [6, 7, 8, 9]], dtype=object)

这又是一个列表数组。要创建一个数组数组,我们首先要创建一个数组列表:

In [38]: out[...] = [np.array(x) for x in Z]
In [39]: out
Out[39]: array([array([1, 2, 3]), array([4, 5]), array([6, 7, 8, 9])], dtype=object)

对象数组是笨拙的野兽,不是完全列表而不是(常规)数组。

答案 2 :(得分:0)

你不能制作那个阵列。数组中的数组与数组中的矩阵类似。它们必须是 m 行,每行都有 n 列。使用列表列表或np.array s

列表

答案 3 :(得分:0)

大家谢谢!答案与我想要的有点不同,但最终我解决了这个问题而没有使用&#39;对于&#39;或者&#39;而&#39;。

首先,我制作了&#34; numpy array&#34; Z1,Z2,Z3并将它们放入&#34; list&#34; Z.列表中有数组。

其次,我转换&#34; list&#34; Z进入&#34; numpy array&#34; Z.它是我想要的数组中的数组。