如何应用一个函数与不同的参数在NumPy一维数组,以使二维数组

2022-01-30 13:40:19 标签 pythonnumpy

假设我有一个NumPy一维数组a:

a = np.array([1, 2, 3])

我有一个函数foo:

def foo(x, p):
    ...
    return y

我想在a上应用foo,比如p从1到3来创建一个2d数组。

# # #还是:

>>> a[:, None] ** np.arange(1, 4)
array([[ 1,  1,  1],
       [ 2,  4,  8],
       [ 3,  9, 27]], dtype=int32)
>>> 

一个函数:

def foo(x, p):
    return x ** p
np.apply_along_axis(lambda x: foo(x, np.arange(1, 4)), 1, a[:, None])

array([[ 1,  1,  1],
       [ 2,  4,  8],
       [ 3,  9, 27]], dtype=int32)

###你在评论中说you want to give both arguments to function For this purpose you can use为此,您可以使用map and functools li和functools like像下图:

from functools import partial
a = np.array([1, 2, 3])
def foo(x,y,z):
    return list(z ** y + x)
list(map(partial(foo, z=a), range(1,4), range(1,4)))

输出:

[
 [3, 4, 5],  # [1,2,3]**1+1
 [3, 6, 11], # [1,2,3]**2+2
 [3, 10, 29] # [1,2,3]**3+3
]

# # #首先numpy module suppormodule支持math函数,所以如果你想在数组中应用math函数,你只需要把它写成普通函数或lambda函数,然后将它应用到你的数组中。例如:

def foo(x,p):
    return numpy.power(x,p) 

注意:这些在numpy模块中更加数学化的函数。试着看看它们:)。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码