【问题标题】:Sum matrix across row instead of summing position values for matrix?跨行求和矩阵而不是求和矩阵的位置值?
【发布时间】: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.reduceliterally equivalent to sum,所以您的程序中有其他问题。

标签: python pandas numpy matrix scipy


【解决方案1】:

你的意思是:

import numpy as np
a = [[1,0],[2,3]]
print(np.sum(a,axis=1)) # gives [1,5]

?

编辑:我刚刚理解你的问题。你可以忽略这个

【讨论】:

  • 是的,但我不能对 a 求和,因为当沿轴 = 1 求和时,它会改变输出矩阵的形状。
【解决方案2】:

如果我理解正确,这就是你想要的结果:

In [10]: np.vstack((matrix_1,matrix_2,matrix_3)).sum(axis=1)
Out[10]: array([0, 0, 0])

这就是你使用 scipy 得到的结果

In [11]: np.vstack((matrix_1,matrix_2,matrix_3)).sum(axis=0)
Out[11]: array([ 2,  0, -2,  0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2013-09-18
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多