首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy数组上的numpy arange

Numpy数组上的numpy arange
EN

Stack Overflow用户
提问于 2013-05-13 01:18:13
回答 2查看 744关注 0票数 1

我有一个函数,它基本上返回generalized harmonic number

代码语言:javascript
复制
def harmonic(limit, z):
   return numpy.sum(1.0/numpy.arange(1, limit+1)**z)

以下是当前函数定义的两个示例:

代码语言:javascript
复制
>>> harmonic(1, 1)
1.0
>>> harmonic(2, 1)
1.5

正如你可能猜到的那样,当limit是标量时,这很好用,但是我如何让这个函数也适用于一维和二维数组呢?

下面演示了我想要实现的函数的输出示例

代码语言:javascript
复制
>>> limit = np.array([[1, 2], [3, 4]])
>>> harmonic(limit, 1)
array([[1.0, 1.5], [1.833, 2.083]])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-13 01:52:48

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

代码语言:javascript
复制
>>> 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的情况:

代码语言:javascript
复制
>>> h([[2,2], [2,2]], [[1,2],[3,4]])
array([[ 1.5   ,  1.25  ],
       [ 1.125 ,  1.0625]])
票数 5
EN

Stack Overflow用户

发布于 2013-05-13 01:24:49

在您的示例中,arange在范围[1,limit+1]中生成均匀间隔的1D ndarray。

现在假设你想要一个多维的均匀排列的阵列。然后,您可以使用arange来生成2D ndarray的每个组件。您可以使用list()arange的结果转换为python列表,以使其格式正确作为ndarray构造函数的参数。

这完全取决于你的目的。就像你处理数学一样。分析,你要找的可能是一个网格:

代码语言:javascript
复制
>>> np.mgrid[0:5,0:5]
array([[[0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3],
        [4, 4, 4, 4, 4]],
       [[0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4]]])

More here.

编辑:在你发布代码之后:正如DSM提到的,np.vectorize是一个很好的方法。From doc

代码语言:javascript
复制
class numpy.vectorize(pyfunc, otypes='', doc=None, excluded=None, 
   cache=False)

通用函数类。

定义一个矢量化函数,它接受嵌套的对象序列或numpy数组作为输入,并返回numpy数组作为输出。向量化函数对输入数组的连续元组求值,就像python map函数一样,只是它使用了numpy.的广播规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16510059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档