У меня есть матрица, представленная массивом np. Вот пример того, о чем я говорю. Вы можете видеть, что внутри него есть 3 "вектора"
x = np.array([[1, 1], [1,2],[2,3]])
[1, 1]
, [1,2]
и [2,3]
Цель состоит в том, чтобы превратить это в матрицу, где эти векторы повторяются Таким образом, 0-я строка указанной матрицы должна просто повторяться [1,1]
n раз. И 1-й ряд должен быть [1,2]
повторен n раз. Я полагаю, что это будет выглядеть примерно так: n = 4
xresult = np.array([[[1, 1], [1, 1], [1, 1], [1, 1]],
[[1, 2], [1, 2], [1, 2], [1, 2]],
[[2, 3], [2, 3], [2, 3], [2, 3]]])
И, следовательно,
xresult[0,0] = [1,1]
xresult[0,1] = [1,1]
xresult[0,2] = [1,1]
xresult[1,2] = [1,2]
Цель, конечно, в том, чтобы сделать это без циклов, если это возможно, поскольку это очевидно, но, возможно, менее элегантное / производительное решение.
Вот некоторые попытки, которые не работают
np.tile([x],(2,1))
>>>array([[[1, 1],
[1, 2],
[2, 3],
[1, 1],
[1, 2],
[2, 3]]])
np.tile([x],(2,))
>>>array([[[1, 1, 1, 1],
[1, 2, 1, 2],
[2, 3, 2, 3]]])
np.append(x,x,axis=0)
>>>array([[1, 1],
[1, 2],
[2, 3],
[1, 1],
[1, 2],
[2, 3]])
np.append([x],[x],axis=1)
>>>array([[[1, 1],
[1, 2],
[2, 3],
[1, 1],
[1, 2],
[2, 3]]])
np.array([[x],[x]])
>>>array([[[[1, 1],
[1, 2],
[2, 3]]],
[[[1, 1],
[1, 2],
[2, 3]]]])
(Некоторые из них были просто с n = 2 в качестве цели)
Стоит отметить , что конечная цель состоит в том, чтобы взять x и y (аналогично созданный массив векторов одинакового размера, но не обязательно одинакового числа векторов
y = np.array([[99,11], [23,44],[33,44], [2, 1], [9, 9]])
И запустите процедуру для x, чтобы столбцы результата представляли собой число векторов в y. И запустите процедуру для y, которая аналогична, но делает это по строкам.
y после этого преобразования будет иметь следующий
yresult[0,0] = [99,11]
yresult[1,0] = [22,44]
yresult[2,0] = [33,44]
yresult[2,1] = [33,44]
Таким образом, я могу вычесть две матрицы. Цель состоит в том, чтобы создать матрицу, где индекс xvector является строкой, индекс yvector является строкой, а элемент является Разница между этими двумя векторами.
ultimateResult[0,1]=[1,1]-[23,44]=[-22,-43]
Возможно, есть лучший способ получить это.