簡體   English   中英

在 Python 中循環遍歷二維數組的最佳有效方法是什么

[英]What is the best efficient way to loop through 2d array in Python

我是 Python 和機器學習的新手。 我在互聯網上找不到最好的方法。 我有一個大的二維數組(distance_matrix.shape= (47, 1328624))。 我寫了下面的代碼,但運行時間太長。 for 循環中的 for 循環需要很長時間。

distance_matrix = [[0.21218192, 0.12845819, 0.54545613, 0.92464129, 0.12051526, 0.0870853 ], [0.2168166 , 0.11174682, 0.58193855, 0.93949729, 0.08060061, 0.11963891], [0.23996999, 0.17554854, 0.60833433, 0.93914766, 0.11631545, 0.2036373]]
                    
iskeleler = pd.DataFrame({
    'lat':[40.992752,41.083202,41.173462],
    'lon':[29.023165,29.066652,29.088163],
    'name':['Kadıköy','AnadoluHisarı','AnadoluKavağı']
}, dtype=str)

for i in range(len(distance_matrix)):
    for j in range(len(distance_matrix[0])):
        if distance_matrix[i][j] < 1:
            iskeleler.loc[i,'Address'] = distance_matrix[i][j]
        
print(iskeleler)

為了解釋,我分享了我的數組的前 5 行並展示了我的 dataframe。 İskeleler dataframe distance_matrix

“İskeleler”dataframe 有 47 行。 我想通過查看 distance_matrix 中第 i 行中的所有值並添加小於 1 的值,將它們添加到“İskeleler”中第 i 行的“地址”列。我的意思是,如果我們查看第一行distance_matrix 照片,我想添加 0.21218192 + 0.12845819 + 0.54545613.... 之類的數字,並將它們放在 İskeleler dataframe 的第 i 行的“地址”列中。

我的意圖是遍歷 distance_matrix 並找到一些小於 1 的值。代碼花費的時間太長。 我怎樣才能以更快的方式做到這一點?

我想你的意思是:

import numpy as np

# Set up some dummy data in range 0..100
distance = np.random.rand(47,1328624) * 100.0

# Boolean mask of all values < 1
mLessThan1 = distance<1

# Sum elements <1 across rows 
result = np.sum(distance*mLessThan1, axis=1)

在我的 Mac 上這需要 168 毫秒。

In [47]: %timeit res = np.sum(distance*mLessThan1, axis=1)
168 ms ± 914 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM