Вы можете использовать опцию -Xlinker.
g++ -o foobar -Xlinker -start-group -Xlinker libA.a -Xlinker libB.a -Xlinker libC.a -Xlinker -end-group
ALMOST равно
g++ -o foobar -Xlinker -start-group -Xlinker libC.a -Xlinker libB.a -Xlinker libA.a -Xlinker -end-group
Осторожно!
Преобразовать u
в диагональную матрицу Σ
:
import numpy as np
from pyspark.mllib.linalg import DenseMatrix
Σ = DenseMatrix(len(s), len(s), np.diag(s).ravel("F"))
Транспонировать V
, преобразовать в основной столбец и затем преобразовать обратно в [ 1110]
V_ = DenseMatrix(V.numCols, V.numRows, V.toArray().transpose().ravel("F"))
Умножить :
mat_ = U.multiply(Σ).multiply(V_)
Проверить результаты:
for row in mat_.rows.take(3):
print(row.round(12))
[0. 1. 0. 7. 0.]
[2. 0. 3. 4. 5.]
[4. 0. 0. 6. 7.]
Проверить норму
np.linalg.norm(np.array(rows.collect()) - np.array(mat_.rows.collect())
1.2222842061189339e-14
Конечно, последние два шага используются только для тестирования и не будут осуществимы на реальных данных.