Python 如何递增numpy数组中的值?
我用相同的值填充了一个数组,但是,我希望该值每行递增减少0.025。目前看起来是这样的: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开始的所有值,添加步长直到矩阵大小结束。
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也有,但它们完全不同,而且很糟糕。