我有两个矩阵。计算总和axis=1
。然后我想转置获得的结果。结果包含在表达中。您必须是矩阵1和2的元素,逐行计算总和。
你需要转换总和数组还是有其他方法?
matrix1 = [[ 5. 4. 3. 5. 3.]
[ 5. 7. 8. 2. 2.]
[ 8. 2. 4. 0. 3.]
[ 7. 2. 5. 3. 5.]
[ 3. 1. 3. 0. 2.]]
matrix2 = [[ 5. 7. 6. 5. 4.]
[ 3. 45. 2. 3. 4.]
[ 2. 4. 6. 4. 3.]
[ 3. 4. 5. 6. 54.]
[ 4. 3. 6. 7. 5.]]
s_1 = np.array(matrix_1.sum(axis=1))
s_1 = np.array(matrix_2.sum(axis=1))
s_1T = np.transpose(s_1)
s_2T = np.transpose(s_2)
结果:
S_1T
[ 20. 24. 17. 22. 9.]
S_2T
[ 27. 57. 19. 72. 25.]
如何转置数组?
FROM
[ 20. 24. 17. 22. 9.]
[ 27. 57. 19. 72. 25.]
TO
[20.
24.
17.
22.
9.]
[27.
57.
19.
72.
25.]
在表达式中使用转置数组:
result = ((matrix_2 - matrix_1)/matrix_1)/((s_2T-s_1T)/s_1T)
答案 0 :(得分:1)
s1_t = map(lambda e: [e], s_1)
很可能是你寻求的答案。
答案 1 :(得分:1)
当您获得总和并获得一维数组时,您将丢失一个轴。转置对一维数组没有影响。
您可以插入新轴,也可以在取总和维持两个维度时指定keepdims=True
(并且无需转置数组):
matrix1.sum(axis=1, keepdims=True)
返回:
np.array([[20.],
[24.],
[17.],
[22.],
[ 9.]])