在Python中创建1D数组的1D数组

时间:2018-08-02 11:28:03

标签: python numpy

如何在python中创建1D数组的1D数组?就是这样:

a = [array([0]) array([1]) array([2]) array([3])]

如果我创建一个数组列表并将其强制转换,则会得到一个矩阵:

a = [array([1]), array([2])]
b = np.asarray(a)

然后b.shape =(2,1),但如果我重塑它:

c = np.asarray(a)

然后c = array([1,2]),它是一个整数数组。

有什么办法可以避免这种情况?值得注意的是,内部数组的形状为(1,)。

3 个答案:

答案 0 :(得分:1)

好,找到了。解决方案是使用dtype对象创建一个空数组,并在其中分配一个数组列表。

a = [array([1]), array([2])]
b = np.empty(len(a), dtype=object)
b[:] = a

现在b = array([array([1]),array([2])],dtype = object)

答案 1 :(得分:0)

您的意思是这样的吗?

ans = [np.array([i]) for i in range(4)]
print (ans)

输出

[array([0]), array([1]), array([2]), array([3])] 

答案 2 :(得分:0)

当数组的形状都相同时,您可以具有一个类似矩阵的列表

matrix_like_list = np.array([np.arange(10) for i in range(3)])

>>> array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
           [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
           [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

形状为(3, 10),或者当至少一个数组的大小不同时,您可以具有数组列表

list_of_arrays = np.array([np.arange(np.random.randint(10)) for i in range(3)])

>>> array([array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5, 6]),
       array([0, 1, 2, 3, 4, 5, 6])], dtype=object)

生成的对象将具有形状(3,)

没有其他选择。