Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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 如何递增numpy数组中的值?_Python_Arrays_Python 3.x_Numpy - Fatal编程技术网

Python 如何递增numpy数组中的值?

Python 如何递增numpy数组中的值?,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,我用相同的值填充了一个数组,但是,我希望该值每行递增减少0.025。目前看起来是这样的: import numpy as np vp_ref = 30 surf_lay = np.ones(([1000,10000]), dtype=np.float32); gvp_ref = vp_ref * surf_lay 因此数组中填充了30秒。我希望第一行是30,下一行减少到29.975,一直到底部。我该怎么做?这里有一个解决方案: 定义步长范围以获取从0开始的所有值,添加步长直到矩阵大小结束。

我用相同的值填充了一个数组,但是,我希望该值每行递增减少0.025。目前看起来是这样的:

import numpy as np

vp_ref = 30
surf_lay = np.ones(([1000,10000]), dtype=np.float32);
gvp_ref = vp_ref * surf_lay
因此数组中填充了30秒。我希望第一行是30,下一行减少到29.975,一直到底部。我该怎么做?

这里有一个解决方案:

定义步长范围以获取从0开始的所有值,添加步长直到矩阵大小结束。 减去它! 输出:

array([[30.   , 30.   , 30.   , ..., 30.   , 30.   , 30.   ],
       [29.975, 29.975, 29.975, ..., 29.975, 29.975, 29.975],
       [29.95 , 29.95 , 29.95 , ..., 29.95 , 29.95 , 29.95 ],
       ...,
       [ 5.075,  5.075,  5.075, ...,  5.075,  5.075,  5.075],
       [ 5.05 ,  5.05 ,  5.05 , ...,  5.05 ,  5.05 ,  5.05 ],
       [ 5.025,  5.025,  5.025, ...,  5.025,  5.025,  5.025]])
这里有一个解决方案:

定义步长范围以获取从0开始的所有值,添加步长直到矩阵大小结束。 减去它! 输出:

array([[30.   , 30.   , 30.   , ..., 30.   , 30.   , 30.   ],
       [29.975, 29.975, 29.975, ..., 29.975, 29.975, 29.975],
       [29.95 , 29.95 , 29.95 , ..., 29.95 , 29.95 , 29.95 ],
       ...,
       [ 5.075,  5.075,  5.075, ...,  5.075,  5.075,  5.075],
       [ 5.05 ,  5.05 ,  5.05 , ...,  5.05 ,  5.05 ,  5.05 ],
       [ 5.025,  5.025,  5.025, ...,  5.025,  5.025,  5.025]])
可以使用np.linspace创建线性间隔数据,然后使用np.tile创建二维阵列:

n = 1000
tmp = np.linspace(30, 30 - (n-1)*0.025, n)
result = np.tile(tmp[:, None], (1, 10_000))
可以使用np.linspace创建线性间隔数据,然后使用np.tile创建二维阵列:

n = 1000
tmp = np.linspace(30, 30 - (n-1)*0.025, n)
result = np.tile(tmp[:, None], (1, 10_000))

这里,在这个代码中,alpha是0.025

import numpy as np
vp_ref = 30
surf_lay = np.ones(([1000,10000]), dtype=np.float32);
gvp_ref = vp_ref * surf_lay

alpha = 0.025
substration_array = np.array([[alpha*i]*gvp_ref.shape[1] for i in range(gvp_ref.shape[0])])

gvp_ref.shape
substration_array.shape

output = np.subtract(gvp_ref, substration_array)

这里,在这个代码中,alpha是0.025

import numpy as np
vp_ref = 30
surf_lay = np.ones(([1000,10000]), dtype=np.float32);
gvp_ref = vp_ref * surf_lay

alpha = 0.025
substration_array = np.array([[alpha*i]*gvp_ref.shape[1] for i in range(gvp_ref.shape[0])])

gvp_ref.shape
substration_array.shape

output = np.subtract(gvp_ref, substration_array)

打电话给np.full broadcasting有点牵强。你可以用np.broadcast\u来表示,然后它就变成了真的。事实上,我很确定广播会像gvp_ref-step_range一样工作……我以为gvp_ref-step_range会工作,但一开始并没有。事实上,使用.reforme1000,1,你是对的,确实如此!谢谢@AndrasDeak,编辑,这样更干净。打电话给np.full broadcasting有点牵强。你可以用np.broadcast\u来表示,然后它就变成了真的。事实上,我很确定广播会像gvp_ref-step_range一样工作……我以为gvp_ref-step_range会工作,但一开始并没有。事实上,使用.reforme1000,1,你是对的,确实如此!谢谢@AndrasDeak,经过编辑,这样更干净。你能解释一下为什么需要这样一个数组吗?您可能面临XY问题。最好说“numpy”而不是Python,因为您使用的是np.array。Python也有,但它们完全不同,而且很糟糕。你能解释一下为什么需要这样一个数组吗?您可能面临XY问题。最好说“numpy”而不是Python,因为您使用的是np.array。Python也有,但它们完全不同,而且很糟糕。