python - 获取从 -X 到 X 均匀分布的值的 N 元素向量

标签 python numpy scipy

在Matlab中,一个人可以做到

N=1024;
X=1;
dx=2*X/(N-1);
x=-X:dx:X;

其中一个有一个数组 x包括 -11作为端点。

numpy 中的等价物:

from numpy import r_
N=1024
X=1
dx=2*X/N
x=r_[-X:X:dx]

给我0.998046875作为x[N-1] ,这是不对的。使用 N-1如上给了我一个 N-1 -element数组,这肯定不是我想要的,而且也不以1结尾.我已经验证 x.dtypefloat64 , 这与 Matlab 的表示相同。

我怎样才能像以前在 Matlab 中那样在 numpy 中得到一个完全对称的数组?

最佳答案

您给出的 Python 代码不等价,因为除以 N 而不是 N-1:

octave:1> N=1024;
octave:2> X=1;
octave:3> dx=2*X/(N-1);
octave:4> dx
dx =  0.0019550

对比

>>> N = 1024
>>> X = 1
>>> dx = 2. * X / N
>>> dx
0.001953125

因此,您得到不同的答案也就不足为奇了。现在,要获得与在 Matlab 中获得的结果相同的结果,您可以

>>> dx = 2. * X / (N - 1)
>>> x = r_[-X:X+dx:dx]
>>> x
array([-1.        , -0.99804497, -0.99608993, ...,  0.99608993,
        0.99804497,  1.        ])
>>> x.shape
(1024,)

但实际上,使用 linspace,这就是它的用途,它对于查看您的代码的其他人来说更具可读性。

关于python - 获取从 -X 到 X 均匀分布的值的 N 元素向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914657/

相关文章:

python - 生成 np.einsum 评估图

python - 根据列的多个条件将数据帧拆分为 block

python - 如何使 pandas dataframe str.contains 搜索更快

python - 如何制作具有不同行大小的多维 numpy 数组?

python - 仅使用 NumPy 优化步进函数的代码

python - 为什么我的数组值没有更新?线性回归

python - Visual Studio Code 看不到 wget

python - sqlalchemy - 如何复制深复制条目及其所有外部关系

python - scipy.optimize.fmin 有 2 个变量。如何让它发挥作用

python - Scipy curve_fit似乎没有改变初始参数