2015-06-05 36 views
2

我有一个对象数组,它看起来像这样如何对象数组转换成普通阵列在python

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

B = np.array([浮动(i)用于i的ARR])[:, np.newaxis]可能工作 – kezzos

回答

10

使用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]]) 
+0

如果我刚才提到的上述数组只是多维数组的第一行并且有多行,会怎么样? “np.concatenate”将它们全部加入到我不想要的1d数组中。那么如何在不使用for循环的情况下将它们串联起来呢? – Shashank

0

或者,使用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]]) 
相关问题