如何在Python中将数组数组转换为多维数组?

如何在Python中将数组数组转换为多维数组?,python,arrays,numpy,data-conversion,Python,Arrays,Numpy,Data Conversion,我有一个数组的NumPy数组(长度为X),所有数组的长度(Y)都相同,但类型为“object”,因此具有维度(X,)。我想将其“转换”为一个维度数组(X,Y),其元素类型为成员数组(“float”) 我能看到的唯一方法是“手动”执行类似的操作 [x for x in my_array] 有没有更好的成语来完成这个“转换” 例如,我有一些类似于: array([array([ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]), a

我有一个数组的NumPy数组(长度为X),所有数组的长度(Y)都相同,但类型为“object”,因此具有维度(X,)。我想将其“转换”为一个维度数组(X,Y),其元素类型为成员数组(“float”)

我能看到的唯一方法是“手动”执行类似的操作

[x for x in my_array]
有没有更好的成语来完成这个“转换”


例如,我有一些类似于:

array([array([ 0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]),
       array([ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]),
       array([ 0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]), ...,
       array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.]),
       array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.]),
       array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.])], dtype=object)

它具有
形状
(X,)而不是(X,10)。

可以将阵列连接到新轴上。例如:

In [1]: a=np.array([1,2,3],dtype=object)
   ...: b=np.array([4,5,6],dtype=object)
要制作数组,我们不能像删除的答案那样将它们与
数组
组合:

In [2]: l=np.array([a,b])
In [3]: l
Out[3]: 
array([[1, 2, 3],
       [4, 5, 6]], dtype=object)
In [4]: l.shape
Out[4]: (2, 3)
相反,我们必须创建一个正确形状的空数组,并填充它:

In [5]: arr = np.empty((2,), object)
In [6]: arr[:]=[a,b]
In [7]: arr
Out[7]: array([array([1, 2, 3], dtype=object), 
               array([4, 5, 6], dtype=object)], 
              dtype=object)
np.stack
的作用类似于
np.array
,但使用
串联

In [8]: np.stack(arr)
Out[8]: 
array([[1, 2, 3],
       [4, 5, 6]], dtype=object)
In [9]: _.astype(float)
Out[9]: 
array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.]])
我们还可以使用
串联
hstack
vstack
组合不同轴上的阵列。它们都将数组数组视为数组列表


如果
arr
是2d(或更高),我们必须先
ravel
它。

你是如何得到这个数组的?这类事情通常意味着你在程序的早期做了错事。我怀疑子数组实际上没有相同的长度.np.transpose(您的_数组).astype(float)@Mr_U4913:“ValueError:使用序列设置数组元素”@user2357112:子数组确实有相同的长度@user2357112:我从一个列表开始,其中一个列表中的所有数组的长度都是Y,然后我将其转置(出于许多原因),并用例如
[:,1]
对其进行切片,这就给出了有问题的结构。@raxacoricofallapatorius:听起来你肯定做错了什么。也许在转置中。