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

如何在多维数组中混合元素使用numpy frompyfunc()?

解决numpy多维数组元素交叉混合运算的问题

首先你用accumulate的方式不对,这个方法是做累积迭代运算,比如输入[[1,2], [3,4]]时,它会先返回第一个元素[1,2],再返回第一个元素和第二个元素运算后的结果,最终得到的是array([[1, 2], list([4, 6])], dtype=object),不是你要的[4,6]。

下面给你两种实现需求的方法:

方法一:直接索引计算(最简单高效)

既然需求明确是两个子数组的交叉位相加,直接取对应索引计算即可,不需要用到frompyfunc:

import numpy as np
arr = np.array([[1,2], [3,4]])
result = np.array([arr[0, 0] + arr[1, 1], arr[0, 1] + arr[1, 0]])
# 输出:array([4, 6])

方法二:用frompyfunc直接调用(满足你的函数使用需求)

如果你一定要用frompyfunc创建自定义函数,直接对两个子数组调用这个函数就行,不用accumulate:

import numpy as np
# 创建自定义通用函数
uadd = np.frompyfunc(lambda x, y: [x[0] + y[1], x[1] + y[0]], 2, 1)
arr = np.array([[1,2], [3,4]])
# 直接传入两个子数组运算,再转成numpy数组
result = np.array(uadd(arr[0], arr[1]))
# 输出:array([4, 6])

简单总结:accumulate是用来做连续累积运算的,比如对[a,b,c]依次计算a、a op b、(a op b) op c,和你要的仅对两个元素做一次交叉运算的场景不匹配,直接调用自定义函数或者手动索引计算就能得到你要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:45:22