亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調整使用 linspace 創建的數組的大小:數組不擁有其數據

調整使用 linspace 創建的數組的大?。簲到M不擁有其數據

慕神8447489 2023-09-26 14:05:23
我正在使用linspace創建一個數組:>> a = np.linspace(0, 4, 9)>> a>> array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. ])我成功地調整了它的大小,如下所示:>> a.resize(3, 3)>> a>> array([[0. , 0.5, 1. ],       [1.5, 2. , 2.5],       [3. , 3.5, 4. ]])但是,當我嘗試按如下方式調整其大小時:a.resize(4, 2, refcheck=False)這給了我以下錯誤: ValueError: cannot resize this array: it does not own its data當我創建相同的值數組并調整其大小時,數組大小已成功調整:>> b = np.array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. ])>> b.resize(4, 2, refcheck=False)>> b>> array([[0. , 0.5],       [1. , 1.5],       [2. , 2.5],       [3. , 3.5]])a和兩者b都是numpy.ndarray我的問題:為什么resize()使用創建數組時會出現此錯誤linspace?當使用 3x3 調整大?。ㄒ虼耸褂脭到M的所有元素)時,它不會抱怨所有權,但為什么即使我使用refcheck=False選項它也會抱怨 4x2 ?linspace我閱讀了有關和 的文檔resize,但找不到有關原因的答案。
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

如果您檢查a.flags創建的數組,np.linspace()您將看到 OWNDATA 為 False。這意味著該數組是另一個數組的視圖。您可以用來a.base查看其他數組。

至于為什么np.linspace()產生OWNDATA=False的數組,請參見源代碼:https://github.com/numpy/numpy/blob/v1.19.0/numpy/core/function_base.py#L23-L165

代碼的最后一部分執行此操作:

return y.astype(dtype, copy=False)

copy=False意味著結果是一個視圖。要獲取 OWNDATA=True 的數組,可以使用a.copy(). 然后resize()使用 refcheck=False 就可以了。


查看完整回答
反對 回復 2023-09-26
  • 1 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號