Python 如何从numpy对象数组中删除所有字符串元素
原点数组类似于:Python 如何从numpy对象数组中删除所有字符串元素,python,numpy,Python,Numpy,原点数组类似于: array([nan, nan, 'hello', ..., nan, 'N', 61.0], dtype=object) 如何从该数组中删除所有字符串并获得一个具有dtype float的新数组 我知道我可以使用python列表来实现这一点: [i for i in x if type(i) == float] 但是这种方法会将numpy.ndarray更改为list,在numpy中有没有这样做的方法?我没有看到纯numpy的方法,但是如果您可以使用pandas返回num
array([nan, nan, 'hello', ..., nan, 'N', 61.0], dtype=object)
如何从该数组中删除所有字符串并获得一个具有dtype float的新数组
我知道我可以使用python列表来实现这一点:
[i for i in x if type(i) == float]
但是这种方法会将
numpy.ndarray
更改为list
,在numpy中有没有这样做的方法?我没有看到纯numpy
的方法,但是如果您可以使用pandas
返回numpy
数组:
import panadas as pd
import numpy as np
arr = np.array([np.nan, np.nan, 'hello', np.nan, 'N', 61.0], dtype=object)
pd.to_numeric(pd.Series(arr), errors='coerce').dropna().values
你可以试试下面的方法
将numpy导入为np
a=数组([np.nan,np.nan,'hello',…,np.nan,'N',61.0],dtype=object)
a=a[[a中i的i持续(i,浮动)]]
您可以使用np.fromiter():
要进一步删除nan值,请执行以下操作:
r = r[~np.isnan(r)]
#[61.]
使用
np.array
包装该列表。与列表相比,使用对象数据类型数组不会节省任何时间。两者都包含对内存中其他位置对象的引用。快速的数值numpy
方法不适用于此。不需要where
方法。我知道了。修好了
r = r[~np.isnan(r)]
#[61.]