【问题标题】:pyplot of array crashes数组崩溃的pyplot
【发布时间】:2011-03-09 19:30:29
【问题描述】:

我正在尝试绘制从对 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}

我做错了什么?

【问题讨论】:

    标签: python numpy matplotlib


    【解决方案1】:

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

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

    然后使用绘制数据

    plt.plot(sums)
    

    一般来说,首先应避免将此类数据放入 dict 中,因为您的键值只是索引,它们隐含在 numpy 数组中。

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

    【讨论】:

    • 感谢您将总和加载到数组中,这是我需要的,但找不到。
    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2016-08-19
    • 2015-06-05
    相关资源
    最近更新 更多