Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:创建一个arange数组_Python_Arrays_Numpy - Fatal编程技术网

python:创建一个arange数组

python:创建一个arange数组,python,arrays,numpy,Python,Arrays,Numpy,我正在看这篇文章,因为我想创建一个数组,其中每个列都是一个xvectoraranged bydx,分别带有相应的dx。希望这是有道理的 import numpy as np L = 80.0 N = 2 ** np.arange(-4, 10, dtype = np.float64) dx = L / N 在我的原始代码中,我看到了一个dx,现在我有了一个dx值数组。 当我只使用一个dx时,我设置了x向量,如下所示: x = np.arange(-L / 2., L / 2. - dx, dx

我正在看这篇文章,因为我想创建一个数组,其中每个列都是一个
x
vector
arange
d by
dx
,分别带有相应的
dx
。希望这是有道理的

import numpy as np
L = 80.0
N = 2 ** np.arange(-4, 10, dtype = np.float64)
dx = L / N
在我的原始代码中,我看到了一个
dx
,现在我有了一个
dx
值数组。 当我只使用一个
dx
时,我设置了x向量,如下所示:

x = np.arange(-L / 2., L / 2. - dx, dx)
但是,对于每个
dx
,我需要一个
x
,但我不确定如何做到这一点。我看了一开始提到的那篇文章,我认为它提供了一些见解。不过,我似乎无法根据自己的需要进行调整——也许这甚至不是正确的方法

也许我需要一个
循环

for i in len(dx):
    x[i] = np.arange(-L / 2., L / 2. - dx, dx)
然后我可能需要为
循环嵌套另一个
,为每个迭代选择一个
dx

但我不确定什么是正确的方法或最有效的方法


为了澄清混淆,在one
dx
情况下,我设置了以下设置:

x = np.arange(-L / 2.0, L / 2.0 - dx, dx)                                         
k = np.hstack((np.arange(0, N / 2.0 - 1.0),                                       
               np.arange(-N / 2.0, 0))).T * 2.0 * np.pi / L                       
k1 = 1j * k                                                                       
k3 = (1j * k) ** 3                                                                
u = 2 * (2 / (np.exp(x + 20.0) + np.exp(-x - 20.0))) ** 2                                   
udata = u                                                                         
tdata = 0.0 

Integration here
然后,我使用带有Runge-Kutta 4积分的伪谱方法来数值确定非线性KdV方程的
u
。我想在不同的
dx
值上运行代码,以便找到错误并绘制
1/dx
与错误的对比图,其中
1/dx
是x轴上的最大值

我希望这有助于我努力实现的目标



既然我想找到错误,我需要相同的步长吗?我知道错误将以
exp(-c*dx)
的形式绘制,其中
c
是一个任意常数。我之所以知道这一点,是因为伪谱方法的错误是
exp(-c/dx)
,但我将针对
1/dx

进行绘图,我不确定您想如何处理@Joel提出的问题,因为就目前而言

x=np.arange(-L/2,L/2.-dx,dx)
对于不同的
dx
将给出不同大小的数组,这些数组无法堆叠。您可以使用建议的for循环创建此类数组的列表:

L=10
dxs=np.数组([1,2,3])
xs=[np.arange(-L/2,L/2,dx)表示dx中的dx]
那么,
xs
是:

[数组([-5,-4,-3,-2,-1,0,1,2,3,4]),
数组([-5,-3,-1,1,3]),
数组([-5,-2,1,4])]
注意:我从上限(
L/2-dx
=>
L/2
)中删除了
-dx
),因为
arange
已经排除了最后一点,您可以看到这一点,因为结果永远不会以
L/2
结束,即
5

如果希望在保持相同边界的同时增加步长,这是不可避免的


如果您可以更改边界并希望步长增加,但保持相同的元素数,那么我建议使用以下方法,这样可以增加边界

x=np.arange(-L/2,L/2)
x
#数组([-5,-4,-3,-2,-1,0,1,2,3,4])
x*dxs[…,无]
#数组([-5,-4,-3,-2,-1,0,1,2,3,4],
#       [-10,  -8,  -6,  -4,  -2,   0,   2,   4,   6,   8],
#       [-15, -12,  -9,  -6,  -3,   0,   3,   6,   9,  12]])

我不知道如何回答你的问题,但是arrange/arange的不同拼写是故意的吗?我在文本中看到了这两个方面,但我对python的了解还不够,无法编辑(如果它需要的话)。我不完全确定你在问什么,你想要一个NxM数组,其中每列都是不同的
arange
?是的,我也不太理解这个问题。如果这是@bheklillr建议的,那么您可以使用广播来执行类似于
np.arange(-2,2)[…,None]+np.arange(3)[None,…]
的操作,因为您需要由这些列组成的数组,所以每列都需要相同数量的元素。但是元素的数量取决于
dx
。您可以尝试使用
np.linspace
来指定要使用的元素数,但这会更改您的
dx
。既然我想查找错误,我需要相同的步长吗?我知道错误将以
exp(-c*dx)
的形式绘制,其中c是一个任意常数。我之所以知道这一点,是因为伪光谱法的错误为
exp(-c/dx)
,但我将针对
1/dx
进行绘图。我不确定我是否了解您的应用程序,是否能够提供帮助。听起来像是
dx
是点的间距,但问题的界限应该设置边界(
L
应该是固定的),因此您可能需要第一个解决方案。您不能将其放入数组,因为每个
x
的点数将不同,因此您最初的问题可能没有意义,但这不应该是一个问题。只需为xs中的x求解