如果我在数组数组中转换数组列表(内部数组的长度都相同),则python将所有元素组合在一起的矩阵转换为矩阵。我希望它始终保持数组数组。这是发生了什么:
list_1 = [[np.array([1,2,3]),np.array([4,5,6])]]
>>> np.array(list_1)
array([[[1, 2, 3],
[4, 5, 6]]])
但我会:
>>> np.array(list_1)
array([array([1, 2, 3]), array([4, 5,6])], dtype=object)
我该如何实现?
答案 0 :(得分:1)
list_1 = [[np.array([1,2,3]),np.array([4,5,6])]]
l = np.array(list_1)
print(l.tolist())
结果:
[[[[1,2,3],[4,5,6]]]
答案 1 :(得分:1)
In [20]: list_1 = [[np.array([1,2,3]),np.array([4,5,6])]]
分配大小合适的对象dtype数组:
In [27]: arr = np.empty(2, object)
将值从列表复制到该数组:
In [28]: arr[:] = list_1[0]
In [29]: arr
Out[29]: array([array([1, 2, 3]), array([4, 5, 6])], dtype=object)
有时候广播会导致这种复制出现问题,我不得不依靠更明确的迭代方式:
In [30]: for i in range(2):
...: arr[i] = list_1[0][i]
您的list_1
有一组额外的括号,因此需要使用list_1[0]
。
我在评论中链接的最近一个问题对于为什么np.array(list_1)
通常会生成2d(实际上是3d)数组有很多很好的答案。