您可以先从数据中删除NaN,然后打印筛选的数据。
为此,首先可以使用^{}找到NaNs,然后使用^{} operator对该布尔数组执行逐位反转。使用它来索引数据数组,然后过滤掉NaNsfiltered_data = data[~np.isnan(data)]
在一个完整的例子中(改编自here)
对于1D数据:import matplotlib.pyplot as plt
import numpy as np
# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low), 0)
# Add a NaN
data[40] = np.NaN
# Filter data using np.isnan
filtered_data = data[~np.isnan(data)]
# basic plot
plt.boxplot(filtered_data)
plt.show()
对于二维数据:
对于二维数据,不能简单地使用上面的掩码,因为数据数组的每一列都有不同的长度。相反,我们可以创建一个列表,列表中的每一项都是数据数组中每一列的筛选数据。
列表理解可以在一行中完