Вычислите собственные значения матрицы, когда каждый элемент представляет собой непересекающийся массив.Python

Программы на Python
Ответить
Anonymous
 Вычислите собственные значения матрицы, когда каждый элемент представляет собой непересекающийся массив.

Сообщение Anonymous »

У меня есть ковариационная матрица размером 2x2, представленная в виде трех непересекающихся массивов, то есть трех массивов Nx1. N в этом случае представляет время, то есть ковариацию некоторых измерений во времени. Я хотел бы иметь возможность вычислять собственные значения на каждом временном шаге без копирования отдельных массивов в квадратную матрицу.
Я мог бы иметь матрицу 3x3 или 6x6 (представленную в виде отдельных столбцов для верхнего треугольника) с миллионами временных шагов. Копирование может быть медленным и непомерно медленным.
Есть ли способ сделать это в NumPy изначально? Я пытался найти, как создать представление из нескольких непересекающихся массивов, но, похоже, ничего не существует.
Краткий фрагмент примера данных о том, что я пытаюсь сделать.

Код: Выделить всё

import numpy as np
NR = 10_000_000
A = np.random.random([2,2])
cov = np.dot(A, A.T)
cov_n = np.repeat(cov[np.newaxis, :,:], NR, 0)

# I really have these in memory.
# Can I compute the eigenvalues with NumPy without copy?
cov_00 = np.repeat(np.array([cov[0,0]]), NR, 0)
cov_11 = np.repeat(np.array([cov[1,1]]), NR, 0)
cov_01 = np.repeat(np.array([cov[0,1]]), NR, 0)
Я открыт для Нумбы. В документации NumPy для этой процедуры показано:

Собственные значения вычисляются с использованием подпрограмм LAPACK _sievd, _heevd.

Смогу ли я вызвать их непосредственно в подпрограмме, скомпилированной JIT? Сохранит ли это мне копию?

Подробнее здесь: https://stackoverflow.com/questions/797 ... oint-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»