Skip to main content
 首页 » 编程设计

Python:从列表中产生增量以形成数组

2025年05月04日9exmyth

我有以下数据

a= [1 1.1 1.2 1.3 1.4 1.5] 

我想要做的是为该数据的每个值生成一系列以 10% 间距递增的点。创建一个新数组:

b=  [[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0], [0 0.11 ... 1.1],.....] 

接下来我要做的是从列表 1 中取出每个数字,并根据另一个值确定增量数(20% 间距),例如2、获取另一个数组:

c=[[1 1.2 1.4. 1.6 1.8 2.0], [1.1 ..... 2.0],......] 

然后我想组合这些数组:

  d =[[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1 1.2 1.4. 1.6 1.8 2.0], [0 0.11 ... 2.0],.....] 

列表 1 由方程式确定,但我想进一步计算到某个点,在这种情况下值为 2。

arange 可以工作还是可以通过其他方式生成数字序列?这可能吗?

请您参考如下方法:

混合列表理解和 np.linspace 非常简单:

>>> a = [1, 1.1, 1.2, 1.3, 1.4, 1.5] 
 
>>> b = [np.linspace(0, j, 11) for j in a] 
>>> b 
[array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ]), 
 array([ 0.  ,  0.11,  0.22,  0.33,  0.44,  0.55,  0.66,  0.77,  0.88,  0.99, 
         1.1 ]), 
 ... 
 array([ 0.  ,  0.15,  0.3 ,  0.45,  0.6 ,  0.75,  0.9 ,  1.05,  1.2 ,  1.35, 
         1.5 ])] 
 
>>> c = [np.linspace(j, 2, 6) for j in a] 
>>> c 
[array([ 1. ,  1.2,  1.4,  1.6,  1.8,  2. ]), 
 array([ 1.1 ,  1.28,  1.46,  1.64,  1.82,  2.  ]), 
 ... 
 array([ 1.5,  1.6,  1.7,  1.8,  1.9,  2. ])] 

要连接它们,您必须删除 c 中每个数组的第一个元素或 b 中每个数组的最后一个元素。如果您只需要串联,我建议保留 c 如上所述,并执行:

>>> b = [np.linspace(0, j, 10, endpoint=False) for j in a] 
 
>>> d = map(np.concatenate, zip(b, c)) 
>>> d 
[array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. , 
         1.2,  1.4,  1.6,  1.8,  2. ]), 
 array([ 0.  ,  0.11,  0.22,  0.33,  0.44,  0.55,  0.66,  0.77,  0.88, 
         0.99,  1.1 ,  1.28,  1.46,  1.64,  1.82,  2.  ]), 
 ... 
 array([ 0.  ,  0.15,  0.3 ,  0.45,  0.6 ,  0.75,  0.9 ,  1.05,  1.2 , 
         1.35,  1.5 ,  1.6 ,  1.7 ,  1.8 ,  1.9 ,  2.  ])] 

如果你想要列表而不是 numpy 数组,你总是可以做一个 final

>>> d = map(list, d)