选择值为 np.nonzero() 和 ~np.isnan() 的索引



我只想选择那些值不同于'Nan'和0的索引

创建数据帧

df = pd.DataFrame({'A':[np.nan,3,0,2],
'B':[0,1,1,2]})
df = np.asarray(df)

不幸的是,下面的代码不起作用

df[np.nonzero(df) & ~np.isnan(df)]

预期成果

array(3,1,1,2,2)

有谁知道它有什么问题?

numpy.ravel将值转换为 1d 数组,然后对于非0值,按!= 0比较:

a = np.ravel(df.to_numpy())
a = a[(a != 0) & ~np.isnan(a)]
print (a)
[3. 1. 1. 2. 2.]

就像@sammywemmy提到的,谢谢,这里np.ravel不是必需的:

a = df.to_numpy()
a = a[(a != 0) & ~np.isnan(a)]
print (a)
[3. 1. 1. 2. 2.]

你不能按numpy.nonzero进行比较,因为它返回索引而不是掩码:

返回非零元素的索引。

最新更新