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

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

查看到一個numpy數(shù)組?

查看到一個numpy數(shù)組?

達(dá)令說 2019-10-14 15:33:45
我有一個二維numpy數(shù)組。有沒有一種方法可以在其上創(chuàng)建一個包含第一k行和所有列的視圖?關(guān)鍵是要避免復(fù)制基礎(chǔ)數(shù)據(jù)(數(shù)組太大,無法進(jìn)行部分復(fù)制)。
查看完整描述

1 回答

?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個贊

當(dāng)然,只需像平常一樣索引它即可。例如,y = x[:k, :] 這將使視圖返回原始數(shù)組。不會復(fù)制任何數(shù)據(jù),對其所做的任何更新都y將反映在其中x,反之亦然。


編輯:

我通常使用uint8的大于10GB的3D陣列,因此我對此非常擔(dān)心...如果記住一些事項(xiàng),Numpy可以非常有效地進(jìn)行內(nèi)存管理。以下是一些避免在內(nèi)存中制作數(shù)組副本的提示:

使用+=-=,*=等,以避免使數(shù)組的一個副本。例如,x += 10將在適當(dāng)位置修改數(shù)組,同時x = x + 10將復(fù)制并修改它。(另外,看看numexpr)

如果您確實(shí)想使用進(jìn)行復(fù)制x = x + 10,請注意,這x = x + 10.0將導(dǎo)致x將其自動轉(zhuǎn)換為浮點(diǎn)數(shù)組(如果尚未復(fù)制)。但是,x += 10.0在哪里,x是一個整數(shù)數(shù)組,它將導(dǎo)致10.0向下轉(zhuǎn)換為與該數(shù)組相同精度的int。

此外,許多numpy函數(shù)都帶有一個out參數(shù),因此您可以執(zhí)行一些操作,例如np.abs(x, x)獲取x就地的絕對值。


作為第二個編輯,這是關(guān)于視圖和具有numpy數(shù)組的副本的其他一些技巧:

與python列表不同,y = x[:]它不返回副本,而是返回視圖。如果您確實(shí)想要一個副本(當(dāng)然,它將使您正在使用的內(nèi)存量增加一倍),請使用y = x.copy()

您會經(jīng)常聽到有關(guān)numpy數(shù)組的“花式索引”的信息。使用列表(或整數(shù)數(shù)組)作為索引是“花式索引”。它可能非常有用,但是可以復(fù)制數(shù)據(jù)。

例如:y = x[[0, 1, 2], :]返回一個副本,同時y = x[:3,:]返回一個視圖。

即使是真正瘋狂的索引,也x[4:100:5, :-10:-1, None]都是“正?!彼饕?,盡管如此,它會返回一個視圖,所以不要害怕在大型數(shù)組上使用各種切片技巧。

x.astype(<dtype>)將以新類型x.view(<dtype>)返回?cái)?shù)據(jù)的副本,而將返回視圖。

但是,請務(wù)必小心……它非常強(qiáng)大且有用,但是您需要了解基礎(chǔ)數(shù)據(jù)如何存儲在內(nèi)存中。如果您有一個浮點(diǎn)數(shù)組,并將其視為int,則numpy會將數(shù)組的基礎(chǔ)解釋為int。

例如,這意味著當(dāng)被視為64位int時,1.0將在little-endian系統(tǒng)上作為64位浮點(diǎn)數(shù)4607182418800017408[  0,   0,   0,   0,   0,   0, 240,  63]如果被視為uint8 ,則將被視為數(shù)組。但是,當(dāng)您需要在大型陣列上進(jìn)行某種位糾纏時,這確實(shí)非常好。...您對內(nèi)存緩沖區(qū)的解釋方式具有較低級別的控制。


查看完整回答
反對 回復(fù) 2019-10-14
  • 1 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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