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

如何用迭代访问(2,N)型Numpy矩阵的axis 0元素作为函数参数

问题描述

我有一个形状为(2, N)的Numpy二维矩阵,示例矩阵arr如下:

import numpy as np

arr = np.array([[2, 4, 6], [10, 20, 30]])
print(arr.shape)
arr

输出:

(2, 3)
array([[ 2,  4,  6],
       [10, 20, 30]])

现有一个用于两数相加的add_two函数:

def add_two(a, b):
    return a + b

我希望通过迭代获取(2,10)、(4,20)、(6,30)这样的元素对,作为add_two函数的参数传入,以得到如下输出:

The sum is 12
The sum is 24
The sum is 36

请问该如何实现?

解决方案

这里提供几种可行的实现方式:

方法1:转置矩阵后循环迭代

先将原矩阵转置,把每一列转换为一行,即可直接遍历每组元素对:

import numpy as np

def add_two(a, b):
    return a + b

arr = np.array([[2, 4, 6], [10, 20, 30]])
# 转置后矩阵形状变为(3,2)
for pair in arr.T:
    total = add_two(pair[0], pair[1])
    print(f"The sum is {total}")

方法2:使用zip函数直接配对两行元素

直接将矩阵的第一行和第二行通过zip配对,无需转置操作:

import numpy as np

def add_two(a, b):
    return a + b

arr = np.array([[2, 4, 6], [10, 20, 30]])
for a, b in zip(arr[0], arr[1]):
    total = add_two(a, b)
    print(f"The sum is {total}")

方法3:利用Numpy向量化操作(无需显式循环)

如果不需要强制调用add_two函数,可直接用Numpy的向量化运算批量计算,再格式化输出:

import numpy as np

arr = np.array([[2, 4, 6], [10, 20, 30]])
sums = arr[0] + arr[1]
for s in sums:
    print(f"The sum is {s}")

若必须调用add_two,可以用np.vectorize包装函数后批量处理:

import numpy as np

def add_two(a, b):
    return a + b

arr = np.array([[2, 4, 6], [10, 20, 30]])
vectorized_add = np.vectorize(add_two)
sums = vectorized_add(arr[0], arr[1])
for s in sums:
    print(f"The sum is {s}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:05:12