我使用以下代碼創建一個空矩陣:
import numpy as np
x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
print(x)
y =np.empty_like(x)
print(y)
# I get below data:
[[2097184 2097184 2097184]
[2097184 2097184 2097184]
[2097184 2097184 2097184]
[2097184 2097184 2097184]]
為什么 2097184 代表空?
uj5u.com熱心網友回復:
它不代表任何東西。從檔案:
該函式不初始化回傳的陣列;要做到這一點,請使用
zeros_like或ones_like代替。它可能比設定陣列值的函式稍微快一點。
所以陣列的內容就是它所使用的記憶體中的任何內容。在這種情況下,它是一堆2097184值。下次嘗試時,您可能會得到不同的東西。
當您不關心陣列中的內容時使用它,因為您將覆寫它。
uj5u.com熱心網友回復:
該empty_like方法不初始化陣列(這就是為什么它比zeros_like和快得多ones_like),因此陣列的形狀與 完全相同x,但值未初始化,實際上幾乎是分配給陣列的記憶體位置中的隨機值。
uj5u.com熱心網友回復:
此外,它只是一種更有效的替代方法zeros_likeor ones_like:
%%timeit
np.zeros_like(x)
>>> 18.4 μs ± 2.39 μs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
np.ones_like(x)
>>> 14.1 μs ± 205 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
np.empty_like(x)
>>> 2.09 μs ± 62.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368026.html
上一篇:回傳兩個二維陣列的差值
下一篇:numpy中的矢量化矩陣串列應用
