Python 如何转换相同长度的数组列表
如果我在数组数组中转换数组列表(内部数组的长度都相同),python会将其转换为一个矩阵,将所有元素连接在一起。我希望它始终保持数组的数组。下面是发生的情况:Python 如何转换相同长度的数组列表,python,arrays,list,numpy,Python,Arrays,List,Numpy,如果我在数组数组中转换数组列表(内部数组的长度都相同),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([
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)
我怎样才能做到这一点
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]]
In [20]: list_1 = [[np.array([1,2,3]),np.array([4,5,6])]]
分配大小正确的对象数据类型数组:
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)数组。这与我的问题无关,伙计。对不起,我在回答问题的最后举例说明了一种方法。制作一个大小合适的对象数组,并从列表中填充它。有时避免广播错误是很棘手的。