Python:从列表生成增量以形成数组
我有以下数据Python:从列表生成增量以形成数组,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,我有以下数据 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中获取每个数字,并从另一个值(例如2)确定增量的数量(20%间距),以获得另一个数组: c=[[1 1.2 1.4. 1.6 1.8 2.0], [1.1 ..... 2.
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中获取每个数字,并从另一个值(例如2)确定增量的数量(20%间距),以获得另一个数组:
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数组,您可以随时进行最后一步
>>> d = map(list, d)
请注意,
x.1
,x.2
,x.3
,x.4
,x.6
,x.7
,x.8
,x.9
不能精确地表示为浮点数。