我想创建一个自定义函数,该函数将应用计算将每两列转换为列向量:
numpy.sum(matrix[index here]**2, axis = 1)
有没有一种数字方式可以滑动每两列?谢谢。
水平分割矩阵,将函数应用于每个新数组,并将结果向量堆叠在一起:
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)
表示计算沿最后一个轴的总和