Форум сайта python.su
Есть массив 2501х5000, при печати имею следующее
print(ST)
[[ 0.00260473+0.j 0.00260473+0.j 0.00260473+0.j …,
0.00260473+0.j 0.00260473+0.j 0.00260473+0.j ]
[ 0.00531565-0.00154458j 0.00531565-0.00154458j 0.00531565-0.00154458j
…, 0.00531565-0.00154458j 0.00531565-0.00154458j
0.00531565-0.00154458j]
[ 0.00440922-0.00070652j 0.00440919-0.00070654j 0.00440916-0.00070657j
…, 0.00440930-0.00070644j 0.00440927-0.00070647j
0.00440925-0.00070649j]
…,
[ 0.16353356-0.09085126j 0.10043139-0.13130249j 0.04599444-0.12624614j
…, -0.00937937+0.0968934j 0.11994802+0.09408932j
0.18579881+0.00177086j]
[ 0.16324805-0.09067767j 0.10018040-0.13117995j 0.04572540-0.12617488j
…, -0.00950416+0.09642532j 0.11951940+0.09398752j
0.18541231+0.00190855j]
[ 0.16296273-0.09050441j 0.09992943-0.13105728j 0.04545634-0.12610296j
…, -0.00962667+0.09595935j 0.11909231+0.09388556j
0.18502644+0.00204564j]]
При записи в файл с помощью file.write(str(ST)) имею такой же кусок как и с print. Собственно вопрос, как выводить на экран весь массив без многоточий и как записать его в текстовый файл в виде строк и столбцов. Заранее спасибо!
Офлайн
arikitikМожете сказать, что в данном случае есть “массив”, т.к. в Python такого понятия как-бы нет (есть списки, кортежи, …), вы пользуетесь какой-то библиотекой?
массив
Офлайн
да, я использую numpy.
In : type(ST)
Out: <type ‘numpy.ndarray’>
Офлайн
Посмотри в сторону for, думаю с ним можно что-то сделать.
for i in ST:
file.write(str(i))
Офлайн
можно конечно и так, но мне кажется, что это неправильный путь. и к тому же, print получается тоже в цикле делать?)
Офлайн
arikitikСудя по всему у класса <type ‘numpy.ndarray’> переопределен __repr__ и __str__ так, чтобы print отпечатывал массив с расчетом увидеть только его структуру (очень странно было бы отпечатывать 2501х5000, так как это не нужно). Соответственно str(ST) дает такой же результат. Вам действительено нужно оспользовать цикл для вывода данных в файл.
можно конечно и так, но мне кажется, что это неправильный путь. и к тому же, print получается тоже в цикле делать?)
Офлайн
или самому переопределить __repr__ или __str__ =D
Офлайн
дело в том, что не всегда объём данных столь велик, как в данном случае (12 млн значений). подобный вывод наблюдается даже с относительно малым количеством значений.
есть ещё одно “но”. при попытке сделать
for i in ST:
file.write(str(i))
вывод крайне странен.
выложил текстовый файл с выводом http://slil.ru/28343903
Отредактировано (Дек. 14, 2009 19:31:11)
Офлайн
хорошо бы услышать мнение человека, работавшего с numpy. надеюсь тут такие есть, всё таки популярный проект.
Офлайн
Взгляните по ссылке, http://www.scipy.org/Tentative_NumPy_Tutorial. Там чуть ниже есть раздел Printing arrays, там указано как отключить такое поведение print, как вы описали.
Офлайн