2013-03-05 30 views
2

我有以下數據的Python:從列表中生產的增量形成一個陣列

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.

是否會發生某種工作或其他方式產生一系列數字?這甚至有可能嗎?

+0

要知道,'X不能表示「.1」,「x.2」,「x.3」,「x.4」,「x.6」,「x.7」,「x.8」,「x.9」完全像花車一樣。 – 2013-03-05 01:07:02

回答

1

混合列表理解和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. ])] 

將它們串聯則必須刪除所有數組的第一個元素cb最後每個數組的。如果你只需要串聯,我會建議保持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)