【发布时间】:2017-12-04 15:15:50
【问题描述】:
我有一个大小为 N x M 的矩阵,其中:
matrix_1 = np.array([1, 0, -1, 0])
matrix_2 = np.array([0, 0, 0, 0])
matrix_3 = np.array([1, 0, -1, 0])
在通过 SciPy 执行函数后,得到的矩阵等于:
matrix_4 = np.array([2, 0, -2, 0])
我需要矩阵使得 matrix_4(生成的矩阵)在数组/行之间求和,等于:
matrix_4 = np.array([0, 0, 0])
我尝试过 np.sum([matrix_1, matrix_2, matrix_3], axis = 1) 对各行求和,但这会导致我正在使用的 SciPy 函数出错。
MATLAB中的类似问题,供参考:Summing across rows of a matrix instead of columns
【问题讨论】:
-
你能解释一下错误吗?错误是否与形状输出
(3,)有关? -
是的,错误与数组的形状与另一个数组(未在此问题中列出)大小相等以执行 SciPy 功能有关。 np.sum(arrays, axis = 1) 改变结果数组的形状。
-
正如@jadsq 提到的,您的预期输出尚不清楚。
array([0, 0, 0])是你想要的吗?因为如果是这样,np.sum([matrix_1, matrix_2, matrix_3], axis=1)将 产生所需的输出,等效地,np.add.reduce([matrix_1, matrix_2, matrix_3], axis=1)。 -
@AlexanderReynolds 他已经拥有的代码(
np.sum([matrix_1, matrix_2, matrix_3], axis = 1))也会产生预期的输出,这就是为什么我对他的问题感到困惑...... -
我将投票结束此错误,因为
add.reduce是literally equivalent tosum,所以您的程序中有其他问题。
标签: python pandas numpy matrix scipy