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]]
我到底哪里错了?
提前谢谢。
答案 0 :(得分:1)
调整代码的最简单方法可能是在循环之前启动一个空列表,在循环中将值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数组时,通常最好将它们保存为数组(称为矢量化代码),而不是在循环中逐个元素处理它们。