numpy новичок: написание массива с использованием numpy.savetxt

У меня есть гистограмма numpy, которую я хотел бы вывести в виде текстового файла с разделителями табуляции. Мой код ниже:

targethist = np.histogram(targetlist, bins=ilist)
print targethist
np.savetxt('ChrI_dens.txt',targethist,delimiter='\t')

targetlist и ilist - длинные списки целых чисел. Получаю следующий результат:

(массив ([0, 0, 0, ..., 0, 0, 0]), массив ([1, 10000, 20000, ..., 15060000, 15070000, 15072422])) Отслеживание (последний вызов последним) : Файл "target_dens_np.py", строка 62, в np.savetxt ('ChrI_dens.txt', targethist, delimiter = '\ t') Файл "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2. 7 / site-packages / numpy / lib / npyio.py ", строка 979, в savetxt fh.write (asbytes (format% tuple (row) + newline)) TypeError: требуется аргумент float, а не numpy.ndarray

Кажется, что массив гистограмм был создан, но я сделал что-то не так в строке np.savetxt (). Я прочитал документацию, но не понимаю, почему какой-либо из аргументов в этой функции ожидает числа с плавающей запятой. Где я ошибся?


person pandaSeq    schedule 06.06.2012    source источник


Ответы (1)


Я думаю, что проблема в том, что второй аргумент savetxt должен быть «подобным массиву». Ваш ввод не похож на массив. например

print (len(targethist[0]))
print (len(targethist[1]))

Заметили, что длина не одинакова? Если бы длины были одинаковыми, numpy мог бы преобразовать его в один двумерный массив, и все было бы хорошо, но он не может выполнить преобразование, поэтому он не работает.

Это работает

np.savetxt('stuff.dat',(targethist[0],targethist[1][1:]),delimiter='\t')

Но я обрезал ваши данные;). Вам нужно будет решить, что вы хотите сделать, чтобы обойти это.

Должен признать, сообщение об ошибке здесь довольно загадочное.

person mgilson    schedule 06.06.2012
comment
Пятно! В любом случае это должно было произойти со мной до того, как я столкнулся с загадочной ошибкой. Как оказалось, я хочу обрезать первое целое число в более длинном массиве, так что это идеально. Спасибо! - person pandaSeq; 06.06.2012
comment
@pandaSeq Должен признаться - основываясь на этой трассировке, я несколько минут ломал голову над этим. Обычно, когда вопросы о python-numpy сидят на SO более 10 минут без каких-либо ответов, вы знаете, что происходит что-то забавное;). - person mgilson; 06.06.2012