LINUX.ORG.RU

python что за ограничение на 1024 строки


0

1

Имеется массив из большого числа строк, по 9-ть элементов в каждой строке. Его нужно записать в файл. Стандартные операторы записывают только 1024 строки, беря начало и конец массива.

Как можно эту проблему устранить?

#!/usr/bin/python
import sys
import scitools.filetable as ftable

...

b0n=b0[:,0:9]
fb0n=open(file_name+".raw",'w')
ftable.write(fb0n,b0n)
fb0n.close()

успешно удалось воспользоваться numpy.savetxt(file_name+".raw",b0n).

но вопрос : где я неправильно использую ftable.write() остается?

math-beginer
() автор топика

Стандартные операторы записывают только 1024 строки

scitools.filetable

Очень сбивающий с толку заголовок.

baverman ★★★
()
Ответ на: комментарий от math-beginer

где я неправильно использую ftable.write()

Я думаю авторы сильно намудрили с функцией. 512 очень сильно намекает.

def write(fileobj, a):
    """Write a two-dim. NumPy array a in tabular form to fileobj."""
    # fastest version (of the write family of functions) so far...
    # written by Mario Pernici <Mario.Pernici@mi.infn.it>
    
    if len(a.shape) != 2:
        raise TypeError("a 2D array is required, shape now is "+str(a.shape))
    N = 512
    shape0 = a.shape[0]
    shape1 = a.shape[1]
    str_fmt = '%g\t'*(shape1 - 1) + '%g\n'
    # use a big format string
    str_fmt_N = str_fmt * N
    for i in xrange(shape0/N):
      a1 = a[i:i+N,:]
      # put a1 in  1D array form; ravel better than reshape for
      # non-contiguous arrays.
      a1 = ravel(a1)
      fileobj.write(str_fmt_N % tuple(a1))
    for i in range(shape0 - shape0%N, shape0):
      fileobj.write(str_fmt % tuple(a[i]))
baverman ★★★
()
Ответ на: комментарий от baverman

А мне кажется это просто запись блоками по 512 записей. Ограничения я тут не вижу. Хотя код немного запутанный, может я что-то пропустил.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

>Хотя код немного запутанный

Да ну? Этого не может быть! Питон специально проектировался, чтобы быть самым легкочитаемым!

Led ★★★☆☆
()

for l in my_extra_huge__array : fb0n.write( ".join(map( str, l )) +'\n' )

Ы???

AIv ★★★★★
()
Ответ на: комментарий от Led

>Хотя код немного запутанный

Да ну? Этого не может быть! Питон специально проектировался, чтобы быть самым легкочитаемым!

для талантливых «индусов» нет ничего невозможного

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.