gpt4 book ai didi

python - 范围生成器 `r_` - 具有复杂(但不是虚构)步骤的切片;使用幅度

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

玩 NumPy 串联和范围构建对象 r_ 我无意中发现了以下行为:显然,无论是实数、虚数还是真复数,一个复数步骤的绝对值都取为类似 linspace 的步骤。

>>> import numpy as np
>>>
>>> np.r_[0:12:4] # start : stop : step
array([0, 4, 8]) # that's expected
>>> np.r_[0:12:4j] # start : stop : imaginary step
array([ 0., 4., 8., 12.]) # that's in the docs
>>> np.r_[0:12:4+0j] # real step of complex type ?
array([ 0., 4., 8., 12.]) # this is not as far as I can tell
# you can even do stuff like
>>> np.r_[0:12:-4+3j] # proper complex step ?
array([ 0., 3., 6., 9., 12.])

问题:我只是想知道这是否是官方功能,因为我找不到它的文档。

为什么相关?好吧,r_ 主要是为了节省击键的便利性,在某些情况下,此功能可以为您节省几个字符。

最佳答案

The code does take the absolute value :

if isinstance(step, complex):
size.append(int(abs(step)))

但这不是书面保证。 docs只保证虚数的行为,而不是任意复数:

if step is an imaginary number (i.e. 100j) then its integer portion is interpreted as a number-of-points desired and the start and stop are inclusive

您不应该依赖非纯虚构的复杂输入的行为,因为它没有书面保证。

也就是说,它可能是为了保证。我能够追踪到的最远的 numpy.r_ 代码是 this commit . (这不是它的起源 - 我可以找到对 scipy.r_ 的引用,可以追溯到 even further - 但是尽管找到了对 scipy.r_ 的引用,但我无法找到 scipy.r_ 的代码,我怀疑 SciPy 和 NumPy GitHub 存储库都不包含原始代码。看起来 this 是正确的提交,除了 GitHub 似乎只有一个原始非 Git 提交的片段。)

r_ 没有记录在我可以追踪到的最早的提交中,但是 mgrid 也出现在该提交中,并且 mgrid'复数的类似行为在该提交中记录为

However, if the step length is a COMPLEX NUMBER (e.g. 5j), then the integer
part of it's magnitude is interpreted as specifying the number of points to
create between the start and stop values, where the stop value
IS INCLUSIVE.

我能够追踪到的最远 numpy.r_ 的文档是 this commit 7 年后,标记为“从 doc wiki 合并”。我相信 doc wiki 现在已经消失了,我无法确定最初是谁贡献了这些文档,但这些文档似乎不是基于 numpy.r_ 作者的初衷.

关于python - 范围生成器 `r_` - 具有复杂(但不是虚构)步骤的切片;使用幅度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48940544/

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