Я немного новичок в python (переключение с IDL), поэтому я извиняюсь, если не использую правильную терминологию. Я пробовал искать аналогичные questions, но, похоже, не понял. У меня есть два списка, и я пытаюсь создать гистограмму данных, где dat2 = 1. Я пытался делать это несколько способов, и он продолжает давать мне TypeErrorСписок индексов с другим списком? - Python 2.7
import matplotlib.pyplot as plt
import numpy as np
data = [1.1,4.2,5.3,8.6,10.0,1.2,41.4,23.2]
dat2 = [1,1,1,1,2,2,2,2]
ind = [i for i,v in enumerate(dat2) if v==1]
bins = np.arange(0,45,5)
plt.hist(data[ind],bins)
Точки ошибок в Hist () и говорит: «TypeError: индексы списка должны быть целыми числами, а не списком». Я пробовал ind=map(int,ind)
и ind=[int(i) for i in ind]
без везения.
То, что вы пытаетесь сделать, это возможно с NumPy массивы, так что лучше инициализировать ' data' и 'dat2' как массивы NumPy. –
Я не уверен, как это сделать, если я читаю данные из текстового файла? – edub
NumPy предоставляет такие функции, как ['loadtxt'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html) и [' genfromtxt'] (http: //docs.scipy. org/doc/numpy/reference/generated/numpy.genfromtxt.html # numpy.genfromtxt) для загрузки данных из файлов в массивы NumPy, если они недостаточно хороши, тогда вы можете преобразовать свои списки в массивы NumPy, вызвав ['array () '] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html). –