pyplot массива падает - PullRequest
       6

pyplot массива падает

0 голосов
/ 09 марта 2011

Я пытаюсь построить значения массива, полученные при суммировании отдельных столбцов массива-пустышки.Работая на 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 голосов
/ 09 марта 2011

Следует также отметить, что помимо того факта, что вы пытаетесь построить dict, а не массивный массив (именно поэтому ваш код выдает ошибку), вы можете достичь тех же результатов без использования явного pythonцикл с использованием

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

, а затем нанесите данные на график с помощью

plt.plot(sums)

В общем, следует избегать помещать данные такого рода в первую очередь, поскольку ваши значения ключей являются толькопризнаки, которые неявно присутствуют в массиве numpy.

Следует также принять к сведению, что в исходной формулировке суммы вы циклически изменяете диапазон размера data.shape[0] (количество строк в данных),но затем в сумме вы берете сумму для каждого столбца.Если data.shape[1] < data.shape[0], вы получите ошибку индексации еще до того, как попадете в секцию построения вашего скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...