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.]