gpt4 book ai didi

python - Numpy 在 numpy 数组上排列

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:57 24 4
gpt4 key购买 nike

我有一个基本上返回 generalized harmonic number 的函数.

def harmonic(limit, z):
return numpy.sum(1.0/numpy.arange(1, limit+1)**z)

这里是当前函数定义的两个例子:

>>> harmonic(1, 1)
1.0
>>> harmonic(2, 1)
1.5

正如您可能猜想的那样,当 limit 是标量时它可以正常工作,但我如何才能使该函数也适用于一维和二维数组?

下面演示了我要实现的功能的示例输出

>>> limit = np.array([[1, 2], [3, 4]])
>>> harmonic(limit, 1)
array([[1.0, 1.5], [1.833, 2.083]])

最佳答案

如果您只对 limit 而不是 z 的矢量化感兴趣,就像您展示的示例中那样,那么我认为您可以使用 np.vectorize :

>>> h = np.vectorize(harmonic)
>>> h(1, 1)
array(1.0)
>>> h(2, 1)
array(1.5)
>>> h([[1,2], [3,4]], 1)
array([[ 1. , 1.5 ],
[ 1.83333333, 2.08333333]])
>>> h([[1,2], [3,4]], 2)
array([[ 1. , 1.25 ],
[ 1.36111111, 1.42361111]])

请注意,对于标量情况,这将返回 0 维数组。

实际上,转念一想,它也应该适用于 z 情况:

>>> h([[2,2], [2,2]], [[1,2],[3,4]])
array([[ 1.5 , 1.25 ],
[ 1.125 , 1.0625]])

关于python - Numpy 在 numpy 数组上排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com