如何在Python中将数组数组转换为多维数组?
作者:互联网
我有一个NumPy数组(长度为X),它们的长度都相同(Y),但类型均为“对象”,因此尺寸为(X,).我想用成员数组的元素类型(“ float”)将其“转换”为维度(X,Y)的数组.
我可以看到的唯一方法是“手动”使用类似
[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(或更高),我们必须先将其拉平.
标签:data-conversion,python,arrays,numpy 来源: https://codeday.me/bug/20191010/1888920.html