如何使用 numpy 将函数应用于每两列

问题描述 投票:0回答:1

我想创建一个自定义函数,该函数将应用计算将每两列转换为列向量:

numpy.sum(matrix[index here]**2, axis = 1)

有没有一种数字方式可以滑动每两列?谢谢。

python numpy multidimensional-array
1个回答
0
投票

分裂

水平分割矩阵,将函数应用于每个新数组,并将结果向量堆叠在一起:

npairs = data.shape[1] // 2
func = lambda x: (x*x).sum(1, keepdims=True)
answer = np.hstack([func(arr) for arr in np.hsplit(data, npairs)])

重塑

在重塑时,我们使用两个新索引迭代水平轴,其中最后一个索引为 2,以便将列分成对。然后我们沿最后一个轴应用所需的函数:

arr = data.reshape(data.shape[0], -1, 2)
answer = (arr*arr).sum(-1)

备注:

  • data.reshape(x, -1, y)
    表示将第一个和最后一个维度设置为
    x
    y
    ,自动计算中间值
  • data.sum(-1)
    表示计算沿最后一个轴的总和
© www.soinside.com 2019 - 2024. All rights reserved.