как взять матрицу в питоне?

1

Я хочу создать матрицу размером 1234 * 5678 с заполнением ее размером от 1 до 5678 в строчном порядке? > ..!!

Теги:

3 ответа

6

Я думаю, вам нужно будет использовать numpy, чтобы провести такую ​​большую матрицу эффективно, а не просто вычислять. У вас есть ~ 5e6 элементов из 4/8 байт, что означает 20/40 Mb в чистом C уже, несколько раз из этого в python без эффективной структуры данных (список строк, каждая строка - список).

Теперь о вашем вопросе:

import numpy as np
a = np.empty((1234, 5678), dtype=np.int)
a[:] = np.linspace(1, 5678, 5678)

Сначала вы создаете массив запрошенного размера с типом int (предположим, вы знаете, что хотите 4 байта целого числа, что и даст вам np.int на большинстве платформ). Третья строка использует широковещательную передачу, поэтому каждой строке (a [0], a [1],... a [1233]) присваиваются значения строки np.linspace(которая дает вам массив из [1,....., 5678]). Если вы хотите F-хранилище, то есть основной столбец:

a = np.empty((1234, 4567), dtype=np.int, order='F')
...

Матрица a принимает только малую часть памяти больше, чем массив в C, а для вычисления, по крайней мере, возможности индексирования массивов намного лучше, чем списки python.

A nitpick: numeric - это имя старого численного пакета для python - рекомендуемое имя numpy.

2

Или просто используйте Numericical Python, если вы хотите сделать некоторые математические вещи на матрице (например, умножение,...). Если они используют основной порядок строк для макета макета в памяти, я не могу сказать вам, но он распространяется на их документацию

  • 0
    Вы можете исправить внутренний порядок в NumPy. Например, пустая функция для создания незаполненного массива имеет аргумент порядка («C» против «F» для C против Fortran). Хотя макет по умолчанию - это порядок строк.
  • 0
    С матричным анализом проблема заключается не только в создании матриц, но и в матричной арифметике и взаимодействиях. Используйте numpy / scipy, это того стоит.
1

Вот сообщение форума, в котором есть примеры кода того, чего вы пытаетесь достичь.

  • 0
    Это будет иметь плохую производительность для такой битовой матрицы. Просто его создание займет довольно много ресурсов процессора и памяти.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню