2017-10-09 46 views
1

我有一個向量r0定義通過r0 = np.r_[0, 0, 1]優雅的方式來創建一列等距陣列

我可以定義它的鏡像r0 = -r0,這是np.r_[0, 0, -1]

我想創建的r0的列表,這樣的:

0, 0, -1 
0, 0, -1 + step 
0, 0, -1 + 2*step 
... 
0, 0, 1 

作爲3列的陣列和(1 - ( - 1))/步行。

我只能想到做一個列表然後把它變成一個數組,但我真的想繼續使用數組,因爲我將所有的代碼轉換爲向量。

+0

你想要的輸出是什麼? – GiantsLoveDeathMetal

+0

3列和(1 - ( - 1))/階梯線的陣列。 – SuperCiocia

+0

你似乎在使用Numpy。你真的應該添加'numpy'標籤來解決這些問題。 –

回答

3

你似乎是在尋找np.linspace

>>> z_start = -1 
>>> z_stop = 1 
>>> step = 0.25 
>>> np.linspace(z_start, z_stop, num=1+(z_stop-z_start)/step) 
array([-1. , -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 , 0.75, 1. ]) 

包裝它們放回一個數組:

>>> z = np.linspace(z_start, z_stop, num=1+(z_stop-z_start)/step) 
>>> n = len(z) 
>>> np.vstack([np.zeros(n), np.zeros(n), z]).T 
array([[ 0. , 0. , -1. ], 
     [ 0. , 0. , -0.75], 
     [ 0. , 0. , -0.5 ], 
     [ 0. , 0. , -0.25], 
     [ 0. , 0. , 0. ], 
     [ 0. , 0. , 0.25], 
     [ 0. , 0. , 0.5 ], 
     [ 0. , 0. , 0.75], 
     [ 0. , 0. , 1. ]]) 
0

您可以創建一個numpy的陣列,並有部分數據的視圖的列表。

import numpy as np 

step = 10 
r = np.zeros((step, 3)) 
r[:, -1] = np.linspace(-1, 1, step) 

r0 = [r[i] for i in range(r.shape[0])] 

# r0 == [array([ 0., 0., -1.]), 
# array([ 0., 0., -0.77777778]), 
# array([ 0., 0., -0.55555556]), 
# array([ 0., 0., -0.33333333]), 
# array([ 0., 0., -0.11111111]), 
# array([ 0., 0., 0.11111111]), 
# array([ 0., 0., 0.33333333]), 
# array([ 0., 0., 0.55555556]), 
# array([ 0., 0., 0.77777778]), 
# array([ 0., 0., 1.])] 
相關問題