第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

NumPy ndarrays 真的是可變的嗎?

NumPy ndarrays 真的是可變的嗎?

幕布斯7119047 2022-12-20 14:57:25
這是我的第一個(gè)代碼片段。運(yùn)行時(shí),它不會(huì)拋出斷言錯(cuò)誤。import numpy as npthis_arr = np.ones(10)next_arr = this_arrnext_arr *= 2assert np.array_equal(this_arr, next_arr)這是我的第二個(gè)代碼片段。運(yùn)行時(shí),它會(huì)拋出一個(gè)斷言錯(cuò)誤。import numpy as npthis_arr = np.ones(10)next_arr = this_arrnext_arr = next_arr * 2assert np.array_equal(this_arr, next_arr)這種行為讓我感到困惑。我對(duì)第一個(gè)代碼片段的理解是,我將名稱初始化this_arr為指向某個(gè)內(nèi)存位置的值。然后,當(dāng)我初始化名稱next_arr以指向相同內(nèi)存位置的相同值時(shí)。因此,當(dāng)我改變指向的值時(shí)next_arr,指向的值this_arr也應(yīng)該改變。這種行為是 Ned Batchelder在此處創(chuàng)造的“Mutable-Presto-Chango” 。但是,第二個(gè)代碼片段不會(huì)以這種方式運(yùn)行。起初,我認(rèn)為也許*=運(yùn)算符在操作符更改時(shí)不會(huì)以某種方式更改值在內(nèi)存中的位置*。但是后來(lái)我回過(guò)頭來(lái)看第一個(gè)片段,發(fā)現(xiàn) 和 的內(nèi)存位置在this_arr這里next_arr也不同!鑒于此,程序如何“知道”更改值this_arr以匹配已更改的值next_arr?另外,為什么程序“不知道”更改第二個(gè)代碼片段中的值?編輯:作為后續(xù)問(wèn)題:所以即使 next_arr 和 this_arr 有不同的內(nèi)存位置,python 初始化的兩者之間有一些潛在的聯(lián)系?
查看完整描述

2 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

我更喜歡談?wù)搶?duì)象和引用,而不是價(jià)值觀。所以我會(huì)把你的第一個(gè)代碼描述為:

這將創(chuàng)建一個(gè)ndarray對(duì)象,并將其(或?qū)λ囊茫┓峙浣othis_arr

this_arr = np.ones(10)

并將相同的引用分配給next_arr

next_arr = this_arr

所以next_arrthis_arr引用同一個(gè)對(duì)象。

然后對(duì)數(shù)組對(duì)象進(jìn)行“就地”更改。使用哪個(gè)名稱并不重要。

next_arr *= 2

這兩個(gè)名稱仍然引用同一個(gè)數(shù)組對(duì)象。(在幕后做*=一些緩沖,但數(shù)組對(duì)象和數(shù)據(jù)緩沖區(qū)位置保持不變)。另一個(gè)可變的變化是next_arr[1] = 10(對(duì)于列表對(duì)象也是如此)。

next_arr = next_arr * 2

乘法生成一個(gè)新的數(shù)組對(duì)象。那被分配給next_arr,打破了與先前引用對(duì)象(this_arr仍然引用)的任何鏈接。

如果id(this_arr)id(next_arr)相同,則引用該對(duì)象。大致id是一個(gè)位置 - 但與c. 但要注意隨著時(shí)間的推移比較 id;它們可以被重復(fù)使用。

arr.__array_interface__是另一個(gè)方便的工具。If 有一個(gè)data鍵告訴我們數(shù)組的底層數(shù)據(jù)緩沖區(qū)位于何處。但是要了解您需要了解數(shù)組的存儲(chǔ)方式以及 和 之間的view區(qū)別copy。


查看完整回答
反對(duì) 回復(fù) 2022-12-20
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)您初始化 next_arr=this_arr 時(shí),它實(shí)際上所做的是將 this_arr 位置的值復(fù)制到 next_arr 的新位置。這是我對(duì)這段代碼的理解,否則這種行為是不可能的



查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)