阵列崩溃的pyplot

时间:2011-03-09 19:30:30

标签: python numpy matplotlib

我试图绘制从numpy数组的各个列求和得到的数组值。 使用Win XP,Python 2.5,matplotlib-1.0.1,numpy-1.5.1,PIL-1.1.7 这是代码:

import Image
import numpy as np
import matplotlib.pyplot as plt
im = Image.open("tish.pnm")
im = im.convert("1") # convert necessary to import into numpy array
pixels = im.getdata() 
n = len(pixels) 
data = np.reshape(pixels, im.size) 
sums = {}
#sum the range of column values
for i in range(0, data.shape[0]):
sums[i] = data[:,i].sum()
#this is where I can't get pyplot to work
plt.plot(sums) # this crashes with a "ValueError: need more than 0 values to unpack"
plt.plot(i,sums) #crashes with the same error

当我做“打印总和”时 我得到的数据如下:

{0: 705330, 1: 667845, 2: 693855, 3: 663000, 4: 699210, 5: 660705, 6: 686970, 7: 662490, 8: 697425, 9: 660450, 10: 688500, 11: 663510,...2913:65295}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

还应该注意,除了你试图绘制一个dict而不是一个numpy数组(这就是你的代码产生错误的原因)的事实,你可以在不使用显式python的情况下获得相同的结果使用

循环
sums = np.sum(data,axis=0)

然后使用

绘制数据
plt.plot(sums)

一般情况下,应该首先避免将这类数据放入dict,因为你的键值只是指标,这是numpy数组中隐含的。

您还应该注意,在您的原始公式中,您循环大小范围data.shape[0](数据中的行数),但是总和是 取每列的总和。如果data.shape[1] < data.shape[0],您甚至在点击脚本的绘图部分之前就会出现索引错误。