我正在嘗試保存一個大矩陣,1000x1000它遵循對數正態分布。但是保存的檔案結果是空的。我在這里做錯了什么?
import numpy as np
import csv
with open('Radius.csv', 'w') as f:
shape = 1000,1000
zmin, zmax = 0.2,0.8
n = np.prod(shape)
zc = np.array([])
while True:
z = np.random.lognormal(mean=0.2, sigma=0.5, size=n * 100)
z = z[(zmin <= z) & (z < zmax)]
z = np.r_[zc, z]
if len(z) >= n:
break
inv_r = z[:n].reshape(shape)
print("1/r =",[inv_r])
writer = csv.writer(f)
writer.writerows(zip(1,[inv_r]))
uj5u.com熱心網友回復:
它與你寫入行的方式有關,zip 函式接受兩個迭代,你傳入一個 int 和一個可迭代的 [list],while 回圈也只會通過一次。如果你運行這個:
import numpy as np
import csv
with open('Radius.csv', 'w ') as f:
shape = 1000,1000
zmin, zmax = 0.2,0.8
n = np.prod(shape)
zc = np.array([])
z = np.random.lognormal(mean=0.2, sigma=0.5, size=n * 100)
z = z[(zmin <= z) & (z < zmax)]
z = np.r_[zc, z]
inv_r = z[:n].reshape(shape)
print("1/r =",[inv_r])
writer = csv.writer(f)
writer.writerows(inv_r)
它至少會記錄到 csv,一定要檢查你的 zip 函式,以確保它符合你的要求!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/495887.html
