Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除';楠';或者,如果数组在从pandas转换为numpy后包含nan,则减少numpy数组的长度_Python_Arrays_Numpy - Fatal编程技术网

Python 删除';楠';或者,如果数组在从pandas转换为numpy后包含nan,则减少numpy数组的长度

Python 删除';楠';或者,如果数组在从pandas转换为numpy后包含nan,则减少numpy数组的长度,python,arrays,numpy,Python,Arrays,Numpy,我想从numpy数组中删除nan。假设我的numpy数组包含: np_array = ["123","pqr","123",nan,"avb", nan] 预期产出: ["123","pqr","123","avb"] 如果我们在pandas中使用pandas.dropna()执行此操作,它将删除我不想执行的整行。我只想删除该值并减小数组大小 有什么可能的方法吗?isnan()应该可以。关于如何操作的示例: >>> import numpy as np >>&g

我想从numpy数组中删除
nan
。假设我的numpy数组包含:

np_array = ["123","pqr","123",nan,"avb", nan]
预期产出:

["123","pqr","123","avb"]
如果我们在pandas中使用
pandas.dropna()
执行此操作,它将删除我不想执行的整行。我只想删除该值并减小数组大小

有什么可能的方法吗?

isnan()
应该可以。关于如何操作的示例:

>>> import numpy as np
>>> np_array = np.array([1,2,3,np.nan,4])
>>> np_array
array([  1.,   2.,   3.,  nan,   4.])
>>> np_array = np_array[~np.isnan(np_array)]
>>> np_array
array([ 1.,  2.,  3.,  4.])
试试这个

np_clean = [x for x in np_array if str(x) != 'nan']

它将从列表中删除nan

您不能使用
np。isnan
,因为
nan
是数组中的字符串,但您可以通过与字符串比较使用布尔索引:
“nan”

>>将numpy作为np导入
>>>np_array=np.array([“123”、“pqr”、“123”、np.nan、“avb”、np.nan])
>>>np_数组[np_数组!='nan']
数组(['1234','pqr','123','avb'],

dtype='这适用于数值数组

filter(lambda x: np.isfinite(x), np.array([1,2,3,np.nan]))

>>>[1.0, 2.0, 3.0]

不工作:错误:**TypeError:ufunc'isnan'不支持输入类型,并且输入规则“安全”其数据类型为object检查数组的
dtype
isnan
为对象数组引发该错误。如果没有理由使用对象数组,则可以执行
arr.dtype=np.float64
或其他操作您需要,然后
isnan
将起作用。如果确实需要对象,请使用上面的MSeifert答案。这些建议的副本仅适用于数字数组(因此它们不是真正的副本)!我假设您也不想删除行?您看过pandas.fillna()吗?一般来说,如果一行被视为观察值,我们将尝试保留整行,而不仅仅是删除行中的nan值。
filter(lambda x: np.isfinite(x), np.array([1,2,3,np.nan]))

>>>[1.0, 2.0, 3.0]