Python 拆分";,上字符串的二维NumPy数组&引用;性格

Python 拆分";,上字符串的二维NumPy数组&引用;性格,python,arrays,string,numpy,Python,Arrays,String,Numpy,我有一个2D字符串数组,如: a=array([['1,2,3'],['3,4,5'],dtype=object)我想把它转换成一个2D Numpy数组,如下所示:a=array([['1','2','3'],['4','5','6'])。然后,我还要将字符串转换为浮点数,因此最终的数组如下所示:a=array([[1.0,2.0,3.0],[4.0,5.0,6.0]])。非常感谢您的帮助。由于它是一个对象数组,我们不妨迭代并使用纯python拆分: In [118]: a = np.array

我有一个2D字符串数组,如:
a=array([['1,2,3'],['3,4,5'],dtype=object)
我想把它转换成一个2D Numpy数组,如下所示:
a=array([['1','2','3'],['4','5','6'])
。然后,我还要将字符串转换为浮点数,因此最终的数组如下所示:
a=array([[1.0,2.0,3.0],[4.0,5.0,6.0]])
。非常感谢您的帮助。

由于它是一个对象数组,我们不妨迭代并使用纯python拆分:

In [118]: a = np.array([['1,2,3'], ['3,4,5']], dtype=object)
In [119]: a.shape
Out[119]: (2, 1)
In [120]: np.array([x.split(',') for x in a.ravel()])
Out[120]: 
array([['1', '2', '3'],
       ['3', '4', '5']], dtype='<U1')
In [122]: np.array([x.split(',') for x in a.ravel()],dtype=float)
Out[122]: 
array([[1., 2., 3.],
       [3., 4., 5.]])
另一种方式:

In [132]: f = np.frompyfunc(lambda astr: np.array(astr.split(','),float),1,1)
In [133]: f(a)
Out[133]: 
array([[array([1., 2., 3.])],
       [array([3., 4., 5.])]], dtype=object)
In [136]: np.stack(_.ravel())
Out[136]: 
array([[1., 2., 3.],
       [3., 4., 5.]])

遍历行并使用
split(',')
在逗号处拆分每一行,并将结果放入具有数字数据类型的新numpy数组中:

import numpy as np

a = np.array([['1,2,3'], ['3,4,5']])
b = np.array([x[0].split(',') for x in a], dtype=np.float32)
print(b)

#[[ 1.  2.  3.]
# [ 3.  4.  5.]]                                          

如果你不介意把它们作为向量,我想提出这个建议

np.array([["asa,asd"], ["dasd,asdaf,asfasf"]], dtype=object)
Out[31]: 
array([['asa,asd'],
      ['dasd,asdaf,asfasf']], dtype=object)
np.concatenate(np.char.split(Out[31].astype(str), ",").ravel())
Out[32]: array(['asa', 'asd', 'dasd', 'asdaf', 'asfasf'], dtype='<U6')
np.array([[“asa,asd”],[“dasd,asdaf,asfasf”]],dtype=object)
出[31]:
数组([['asa,asd'],
['dasd,asdaf,asfasf']],dtype=object)
连接(np.char.split(Out[31].astype(str),“,”).ravel())

Out[32]:数组(['asa','asd','dasd','asdaf','asfasf'],dtype='那不是一个numpy数组。首先,您可能应该尝试将数据读入一个合适的numpy数组,而不是像这样清理混乱。我首先将数据加载到熊猫数据帧对象上,然后提取一个列。这不是给我一个numpy数组吗?然后我对其进行了重塑,使其成为一个2D数组。您可以ave提取了一个NumPy数组,但您向我们展示的不是NumPy数组。我们无法通过猜测来回答您的问题。我现在展示了NumPy数组了吗?
np.array([["asa,asd"], ["dasd,asdaf,asfasf"]], dtype=object)
Out[31]: 
array([['asa,asd'],
      ['dasd,asdaf,asfasf']], dtype=object)
np.concatenate(np.char.split(Out[31].astype(str), ",").ravel())
Out[32]: array(['asa', 'asd', 'dasd', 'asdaf', 'asfasf'], dtype='<U6')