Квадратный массив из линейного массива python - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы получить квадратную матрицу B из линейного вектора A, такую, что B = A * transpose(A).A является массивом numpy, а np.shape(A) возвращает (10,).Я бы хотел, чтобы B был массивом (10,10).Я пытался B = np.matmut(A, A[np.newaxis]), но я получаю сообщение об ошибке:

shapes (10,) and (1,10) not aligned: 10 (dim 0) != 1 (dim 0)

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

вы можете сделать это, используя outer:

import numpy as np
vector = np.arange(10)
np.outer(vector, vector)
0 голосов
/ 23 ноября 2018

Вариация на внешнем продукте:

a = A.reshape(-1, 1) # make sure it's a column vector
B = a @ a.T
0 голосов
/ 23 ноября 2018

Решение немного уродливо, но оно делает то, что вам нужно.

import numpy as np

vector = np.array([1,2,3,4,5,6,7,8,9,10],)
matrix = np.dot(vector[:,None],vector[None,:])
print(matrix)

Вы также можете сделать следующее:

import numpy as np

vector = np.array([1,2,3,4,5,6,7,8,9,10],)
matrix = vector*vector[:,None]
print(matrix)

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

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