我不想将非元组序列用于多维索引,以便脚本在发生变化时支持 Python 的未来版本。
下面是我用来绘制图表的代码:
data = np.genfromtxt(Example.csv,delimiter=',', dtype=None, names=True,
converters={0: str2date})
p1, = host.plot(data["column_1"], data["column_2"], "b-", label="column_2")
p2, = par1.plot(data["column_1"], data['column_3'], "r-", label="column_3")
p3, = par2.plot(data["column_1"], data["column_4"], "g-", label="column_4")
host.set_xlim([data["column_1"][0], data["column_1"][-1]])
host.set_ylim(data["column_2"].min(), data["column_2"].max())
par1.set_ylim(data["column_3"].min(), data["column_3"].max())
par2.set_ylim(data["column_4"].min(), data["column_4"].max())
原文由 yajant b 发布,翻译遵循 CC BY-SA 4.0 许可协议
我可以重现警告:
通过将
:
替换为slice(None)
我们可以将此索引写为:它真的应该是一个元组,而不是一个列表:
该警告告诉我们,列表格式过去是可以的,但将来会产生错误。
我没有看到您的代码在列表索引中执行此类切片。
data
来自genfromtxt
是一个结构化数组,所以按字段名索引是正常的:data["column_1"]
。因此,警告很可能是在plot
代码中生成的。但我们不知道在哪里。警告没有给出任何类型的错误堆栈跟踪,是吗?因此,如果没有像
data
这样的示例数组,或者像Example.csv
这样的 csv 文件,我们就无法重现警告,也无法进一步挖掘。首先,我会在您的每个代码行之间放置某种
print
。目标是确定哪个matplotlib
调用正在产生警告。例如,如果它是在
我可能会尝试将该呼叫更改为
或者
这是一个有点疯狂的猜测……
编辑
FutureWarning:不推荐使用非元组序列进行多维索引使用`arr[tuple(seq)]`
这个最新的 SO 帮助我们识别
scipy.stats
包中的问题函数。它构造一个切片列表,并在不进一步转换为元组的情况下使用它。