如何在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,)。
答案 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,)
。
没有其他选择。