SciPy中10j的价值是多少?

问题描述 投票:2回答:2

我正在学习Python和SciPy。我在下面遇到两个表达式:

a = np.concatenate(([3], [0]*5, np.arange(-1, 1.002, 2/9.0)))

b = np.r_[3,[0]*5,-1:1:10j]

这两个表达式输出相同的数组。我不理解第二个表达式中的10j。它的价值是什么?非常感谢您的帮助。

python arrays numpy scipy
2个回答
2
投票

这是创建np.linspace的简写。

根据docs for np.r_

如果使用切片表示法,则语法start:stop:step等效于括号内的np.arange(start, stop, step)。但是,如果step是一个虚数(即100j),那么它的整数部分被解释为所需的点数,并且start和stop是包含的。换句话说,start:stop:stepj被解释为括号内的np.linspace(start, stop, step, endpoint=1)

因此,对于您的具体情况,-1:1:10j将导致步长为(1 - (-1))/ 9 = 0.222222 ...这给出了以下数组:

>>> np.r_[-1:1:10j]
array([-1.        , -0.77777778, -0.55555556, -0.33333333, -0.11111111,
        0.11111111,  0.33333333,  0.55555556,  0.77777778,  1.        ])

虽然这恰好给你与np.arange(-1, 1.002, 2/9.0)相同的答案,但请注意arange通常不是创建这样一个数组的好方法,因为在aranges中使用非整数步长是bad idea

使用非整数步骤(例如0.1)时,结果通常不一致。最好在这些情况下使用linspace。


0
投票

你去吧:引自https://docs.scipy.org/doc/numpy/reference/generated/numpy.r_.html

但是,如果step是一个虚数(即100j),那么它的整数部分被解释为所需的点数,并且start和stop是包含的。

© www.soinside.com 2019 - 2024. All rights reserved.