2017-08-14 65 views
1

我試圖寫一個腳本,其中包括以下行,將函數應用於numpy數組中的每一行?

fra = struct.frac_coords 

和 「FRA」 給出了以下的答案:

array([[ 0.01106406, 0.11554355, 0.50754736], 
    [ 0.00294858, 0.24640931, 0.99887037], 
    [ 0.37046412, 0.08121749, 0.9386742 ], 
    [ 0.49430774, 0.07065645, 0.7479905 ], 
    [ 0.6249222 , 0.04073112, 0.56187813]]) 

,然後我有以下行:

periodic = struct.get_sites([ 0.01106406, 0.11554355, 0.50754736], 5.95, include_index=True) 

print(periodic) 

所以我必須將從「fra」獲得的數組的每一行輸入到「periodic」行來獲得結果。我如何製作線條,而不需要將數組的線條放入「週期性」的表示中?

謝謝。

回答

2

你很幸運!有一個叫做for循環的令人敬畏的東西,可以讓你依次遍歷每一行並計算相同的值。

fra = struct.frac_coords 

for row in fra: 
    periodic = struct.get_sites(row, 5.95, include_index=True) 
    print(periodic) 
0

我使用列表理解來完成這項工作。

import numpy as np 
    x = np.array([[ 0.01106406, 0.11554355, 0.50754736], 
     [ 0.00294858, 0.24640931, 0.99887037], 
     [ 0.37046412, 0.08121749, 0.9386742 ], 
     [ 0.49430774, 0.07065645, 0.7479905 ], 
     [ 0.6249222 , 0.04073112, 0.56187813]]) 

    def get_sites(a): 
     return a*2 

    [get_sites(y) for y in x] 
相關問題