Python NumPy掩蔽问题——我遗漏了什么?

Python NumPy掩蔽问题——我遗漏了什么?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我使用matplotlib绘制饮食信息,其中x轴表示日期范围,y轴表示消耗的卡路里数量。这并不太复杂,但有一个障碍:并非所有日期都有卡路里信息,最好将这些信息排除在外,而不是进行某种插值/平滑处理 我发现了一些在这种情况下使用numpy掩码的好例子,但似乎我没有弄明白什么,因为我认为应该产生我想要的结果的代码没有改变任何东西 看看: carries\u list\u ma=np.ma.masked\u其中(carries\u list==0,carries\u list) plt.plot(日期

我使用matplotlib绘制饮食信息,其中x轴表示日期范围,y轴表示消耗的卡路里数量。这并不太复杂,但有一个障碍:并非所有日期都有卡路里信息,最好将这些信息排除在外,而不是进行某种插值/平滑处理

我发现了一些在这种情况下使用numpy掩码的好例子,但似乎我没有弄明白什么,因为我认为应该产生我想要的结果的代码没有改变任何东西

看看:

carries\u list\u ma=np.ma.masked\u其中(carries\u list==0,carries\u list)
plt.plot(日期时间列表,卡路里列表,标记='x',颜色='r',ls='-')

这就产生了:

我只想在9-23的队伍中有一个未画的空隙

事实上,我知道我对masked的使用肯定是错误的,因为当我打印卡路里列表mask时,结果是“False”。不是一个列表,它应该显示哪些值被True和False屏蔽/取消屏蔽

有人能帮我澄清一下吗

非常感谢

尝试使用

calories_list_ma = np.ma.masked[calories_list == 0]

我从名字猜你的
carries\u列表是一个列表。如果它是一个列表
carries\u list==0
将返回一个值,即False,因为列表不等于值0
masked_,其中
将尽职地将掩码设置为False,从而生成列表的无掩码副本


您需要先执行
carries\u list=np.array(carries\u list)
以使其成为一个numpy数组。与列表不同,numpy数组具有“广播”功能,
carries\u list==0
将每个元素单独与零进行比较。

什么是
carries\u list
?如果它确实是一个列表,
carries\u list==0
确实会返回False,导致没有掩码。你需要先把它做成一个小数组。哦!非常感谢。目前的产出与预期一致。