gpt4 book ai didi

python - 尝试绘制迭代但 plt.plot 为空

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:43 25 4
gpt4 key购买 nike

a = frame_query("select ....",db)

在我的代码中,var 'c' 是一个我想绘制的 numpy.ndarray 。但是,当我执行以下代码时,我得到一个空图!

for i in a.values:
c = (i[:1]-a.values[-1:])/a.values[-1:]*100
plt.plot(c)
plt.show()

print c

给出:

[[ 28.57142857]]
[[ 27.27272727]]
[[ 27.92207792]]
[[ 28.57142857]]
[[ 22.07792208]]
[[ 22.07792208]]
[[ 22.07792208]]

我究竟错在哪里?

提前谢谢您。

最佳答案

调整代码的最简单方法可能是在循环之前启动一个空列表,在循环内将 c 中的值附加到该列表上,然后在循环之后绘制它。例如:

c_series = []

for i in a.values:
c = (i[:1]-a.values[-1:])/a.values[-1:]*100
c_series.append(c[0])

plt.plot(c)
plt.show()

注意这里使用c[0]是安全的,因为上面这行的逻辑保证了ndarray 将只有一名成员。

但是,这种处理数据结构的方式有点奇怪。由于看起来 a.values 是一个 ndarray,您也可以通过使用 numpy 提供的对数组执行算术运算的工具来简单地做到这一点(我无法测试因为我没有您的 a.values 的逐字副本):

const = a.values[-1:]
c_series = (a.values - const) / const*100
plt.plot(c_series)
plt.show()

一般来说,使用 numpy 数组时,通常最好将它们保留为数组(称为向量化代码),而不是在循环中逐个元素地处理它们。

关于python - 尝试绘制迭代但 plt.plot 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com