Пусть А матрицаБыстрая итерация по столбцам матрицы с ctypes
import numpy as np
A = np.matrix([[3.0, 1.0, 2.0, 0.0], [2.0, 1.0, 3.0, 1.0], [0.0, 2.0, 0.0, 3.0]])
[[ 3. 1. 2. 0.]
[ 2. 1. 3. 1.]
[ 0. 2. 0. 3.]]
Я перед сложной библиотеки (на основе интерфейса ctypes), который кроме меня дает указатели на столбцы матрицы, например:
import ctypes
for j in range(0,4):
a = np.copy(A[:,j])
lib.DoSomething(a.ctypes.data_as(ctypes.POINTER(ctypes.c_double)))
Очевидно, что я стараюсь избежать копирования столбца в переменную a. Наверное, есть множество умных идей? Может быть, мне нужно транспонировать и скопировать матрицу? Или есть способ, которым я могу сохранить его в колонке?
Томас
@ebarr да, это может быть, это просто не по умолчанию. См. Ответ Дэвидма. – jorgeca
То, что вы говорите, относится к изменению шага. Если вы перейдете к документу массива: «Если order is« C »(по умолчанию), тогда массив будет находиться в C-смежном порядке (последний индекс будет самым быстрым). Если« F », то возвращаемый массив будет в Fortran-смежном порядке (первый индекс будет самым быстрым). Разница в скорости связана с фактическим расположением памяти данных. – Davidmh
@Davidmh Извинения, вы на месте. Я неправильно понял документы, но, просто выполняя быстрый тест, я вижу, что он работает нормально. Я удалил свой оригинальный комментарий, чтобы люди не сбились с толку. – ebarr