以下代碼:爲什麼大numpy的陣列64字節對齊的但不是較小的
prev=[]
addresses=[]
for i in range(10000):
a = np.ones(x).astype(np.float32)
prev.append(a)
address = a.__array_interface__['data'][0]
assert(address % 64 == 0)
assert((address not in addresses))
addresses.append(address)
不會用於建議的X> 252值提高的assertionError
,數組大於253,(或大於505大當使用float16時)與小數組的排列方式不同。這是什麼原因?
我在OSX(英特爾(R)酷睿(TM)i7-6920HQ CPU @ 2.90GHz)運行numpy 1.12.1
難道這只是純粹的機會嗎?如果你打印而不是斷言會發生什麼? –
@MadPhysicist - 沒有機會少於一萬分之一(這就是外部循環的目的) –
但是,當一個斷言失敗的時候,你會跳出循環。繼續看看會發生什麼。 –