簡體   English   中英

有效地為數組賦值

[英]Assign values to array efficiently

我如何才能有效地執行此代碼?

import numpy as np

array = np.zeros((10000,10000)) 
lower = 5000  
higher = 10000 
for x in range(lower, higher): 
    for y in range(lower, higher):
        array[x][y] = 1     
print(array)

我認為使用 numpy 庫(沒有循環)必須是一種有效的方法。

嘗試這個:

array[lower:higher, lower:higher] = 1
# OR
array[lower:higher, lower:higher].fill(1) # Faster

當您居住在巨大的陣列中時,第二個過程將比第一個更快。 這是使用小規模數據進行的樣本時間檢查:

>>> from timeit import timeit as t
>>> t("""import numpy as np; a=np.zeros((100,100)); a[50:100,50:100].fill(1)""")
3.619488961998286
>>> t("""import numpy as np; a=np.zeros((100,100)); a[50:100,50:100] = 1""")
3.688145470998279

您可以使用以下代碼:

array[5000:10000,5000:10000].fill(1)

相對於您的代碼,這種方式非常有效。

暫無
暫無

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

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