如何在python中将对象数组转换为普通数组

时间:2015-06-05 12:18:53

标签: python arrays python-2.7 numpy

我有一个看起来像这样的对象数组

array([array([[2.4567]],dtype=object), array([[3.4567]],dtype=object), array([[4.4567]],dtype=object), array([[5.4567]],dtype=object) ... array([[6.4567]],dtype=object))

这只是一个例子,实际的更大。

那么,我该如何将其转换为正常的浮动值numpy数组。

3 个答案:

答案 0 :(得分:13)

使用numpy.concatenate

>>> arr = array([array([[2.4567]],dtype=object),array([[3.4567]],dtype=object),array([[4.4567]],dtype=object),array([[5.4567]],dtype=object),array([[6.4567]], dtype=object)])
>>> np.concatenate(arr).astype(None)
array([[ 2.4567],
       [ 3.4567],
       [ 4.4567],
       [ 5.4567],
       [ 6.4567]])

答案 1 :(得分:1)

或者,使用reshape

In [1]: a = array([array([[2.4567]],dtype=object), array([[3.4567]],dtype=object), array([[4.4567]],dtype=object)])
In [2]: a.astype(float).reshape(a.size,1)
Out[2]:
array([[ 2.4567],
       [ 3.4567],
       [ 4.4567]])

答案 2 :(得分:1)

您可以使用np.stack,它也适用于多维情况:

import numpy as np
from numpy import array

arr = array([array([[2.4567]],dtype=object),array([[3.4567]],dtype=object),array([[4.4567]],dtype=object),array([[5.4567]],dtype=object),array([[6.4567]],
dtype=object)])
np.stack(arr).astype(None)
array([[[2.4567]],
       [[3.4567]],
       [[4.4567]],
       [[5.4567]],
       [[6.4567]]])