如何用Numpy过滤数组中第二列含NaN的行(保留形状)
Numpy过滤含NaN的行(保留二维数组形状)
直接用布尔索引针对第二列的非NaN值筛选整行,就能保留二维数组结构,完全满足后续相关性分析的需求。
步骤示例
- 导入Numpy并定义原数组:
import numpy as np # 示例原数组 arr = np.array([[10., 10.], [20., 13.], [ 5., np.nan], [ 6., np.nan]])
- 生成第二列的非NaN掩码:
# 取第二列(索引为1),筛选出非NaN的行位置 mask = ~np.isnan(arr[:, 1])
- 用掩码过滤数组:
filtered_arr = arr[mask]
验证结果
运行后会得到目标二维数组:
print(filtered_arr) # 输出: # [[10. 10.] # [20. 13.]] print(filtered_arr.shape) # 输出 (2, 2),保持二维形状
关于形状丢失的原因
如果直接对整个数组用~np.isnan(arr),会得到和原数组同形状的二维掩码,用它索引会把数组展平成一维。而我们只需要针对第二列生成一维掩码,用它选择整行,就能保留原有的二维结构。
适配你的115行数组
把上述代码里的arr换成你自己的(115,2)数组即可,逻辑完全通用,过滤后依然是二维数组,可直接用于相关性等统计分析。
内容的提问来源于stack exchange,提问作者Nano
相关产品推荐
相关产品推荐

