【问题标题】:Transpose result of sum [duplicate]总和的转置结果[重复]
【发布时间】:2015-05-15 20:00:24
【问题描述】:

我有两个矩阵。计算超过axis=1 的总和。然后我想转置获得的结果。结果包含在表达式中。您必须将矩阵 1 和 2 的元素逐行计算总和。

你需要转置 sum 的数组还是有其他方法?

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)

【问题讨论】:

  • 你的意思可能是 [[20.] [24.] [17.] [22.] [9.]]?

标签: python arrays numpy matrix transpose


【解决方案1】:

当您取和并取回一维数组时,您将丢失一个轴。转置对一维数组没有影响。

您可以插入新轴,也可以在求和时指定keepdims=True 以保持二维(并避免转置数组):

matrix1.sum(axis=1, keepdims=True)

返回:

np.array([[20.],
          [24.],
          [17.],
          [22.],
          [ 9.]])

【讨论】:

  • TypeError: 'keepdims' 是此函数的无效关键字参数
  • 您使用的是哪个版本的 NumPy?
  • 1.6.1 打包在 ArcGIS 10.2 中。
  • 啊 - 您需要更新版本的 NumPy 才能使用 keepdims 关键字。与此同时,s_1[:,None] 是把缺失的轴重新放回原处的好方法。
【解决方案2】:
s1_t = map(lambda e: [e], s_1)

很可能是您寻求的答案。

【讨论】:

  • 这会给你一个 Python 列表,而不是 NumPy 数组
  • 是的,好的。 s1_t = np.array(map(lambda e: [e], s_1))
猜你喜欢
  • 1970-01-01
  • 2013-08-21
  • 2016-04-10
  • 2017-09-01
  • 2018-09-18
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多