Как заставить порядок массивов в стиле Фортран? - PullRequest
14 голосов
/ 07 октября 2011

Я использую довольно много библиотек на Фортране для выполнения некоторых математических вычислений.Таким образом, все массивы в numpy должны быть непрерывными по Фортрану .
В настоящее время я выполняю это с помощью numpy.asfortranarray () .

Мои вопросы:

  1. Это быстрый способ сообщить NumPy, что массив должен храниться в стиле Fortran, или есть более быстрый?
  2. Есть ли возможность установить некоторый флаг NUMPY, чтобыкаждый созданный массив выполнен в стиле фортрана?

Ответы [ 2 ]

11 голосов
/ 07 октября 2011

Используйте необязательный аргумент order = 'F' (по умолчанию 'C'), при создании объектов numpy.array. Это то, как я это делаю, вероятно, делает то же самое, что вы делаете. Что касается номера 2, я не знаю о настройке порядка по умолчанию, но достаточно просто включить необязательный аргумент порядка при генерации массивов.

5 голосов
/ 08 октября 2011

Относительно вопроса 2: вас может беспокоить сохранение порядка Фортрана после выполнения преобразований и операций с массивами. У меня была похожая проблема с порядком байтов. Я загрузил необработанный массив с прямым порядком байтов из файла, но когда я применил преобразование журнала, результирующий массив будет иметь порядок байтов. Я обошел проблему, сначала выделив второй массив с прямым порядком байтов, а затем выполнив журнал на месте:

b=np.zeros(a.shape,dtype=a.dtype)
np.log10(1+100*a,b)

В вашем случае вы бы присвоили b заказу на Фортран.

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