我有一个看起来像这样的对象数组
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数组。
答案 0 :(得分:13)
>>> 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]]])