You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从numpy数组k中减去数组f得到目标结果(续篇)

用Numpy广播实现数组减法(和乘法解法逻辑一致)

嘿,这问题刚好可以沿用你之前乘法的思路,用numpy的广播机制搞定,步骤超简洁!

核心思路

和你之前“每一列与另一个数组每个值相乘”的解法逻辑完全一致——利用numpy的广播特性,不用写循环,直接通过维度自动匹配完成逐元素的对应减法。

示例演示

假设我们有以下数组:

import numpy as np

# 二维数组k
k = np.array([[5, 10, 15],
              [20, 25, 30],
              [35, 40, 45]])
# 一维数组f,长度和k的列数一致
f = np.array([2, 4, 6])

如果想要实现k的每一列分别减去f中对应的元素(即第一列所有元素减2,第二列减4,第三列减6),直接一行代码搞定:

result = k - f

得到的结果正是你要的:

array([[ 3,  6,  9],
       [18, 21, 24],
       [33, 36, 39]])

维度调整(特殊场景)

如果你的数组维度和示例不同,只需要简单调整即可:

  • 如果f是列向量(形状(3,1)),想要每一行减去f的对应元素,用k - f.T转置后再减
  • 如果想更直观地显式扩展维度(避免广播歧义),可以用np.expand_dims:
    # 显式把f扩展为行向量,和k的行数匹配
    result = k - np.expand_dims(f, axis=0)
    

为什么和乘法解法一致?

不管是乘法还是减法,numpy的广播规则都是一样的:只要两个数组的维度在某个轴上长度相等,或者其中一个为1,就会自动扩展维度匹配,完成逐元素运算。这完全符合你“尽可能少步骤、和之前解法一致”的要求。

内容的提问来源于stack exchange,提问作者user8682794

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:31:10