操作和修改數(shù)組時(shí),他們的數(shù)據(jù)有時(shí)被復(fù)制到一個新的數(shù)組中有時(shí)候沒有,這有點(diǎn)不太理解,什么時(shí)候是副本什么時(shí)候是視圖呢?
為了節(jié)省計(jì)算機(jī)內(nèi)存numpy 有視圖與副本兩種狀態(tài)除非顯示的調(diào)用copy()函數(shù)否則都是視圖。
1.一點(diǎn)也沒拷貝的狀態(tài)(兩個變量指向相同內(nèi)存空間)
import numpy as np
a = np.arange(27)
b = a #并沒有新的對象被創(chuàng)建,a和b只是相同ndarray對象的兩個名字而已,下面用id()來驗(yàn)證一下

可見a和b指向同一個數(shù)據(jù)對象。
2.視圖或淺拷貝
c = a.view()
以下可見c = a.view()創(chuàng)建了一個新的對象,兩個對象共享相同的數(shù)據(jù)。

對象c和a都可以對數(shù)據(jù)的數(shù)值進(jìn)行修改,但是c不能對shape屬性進(jìn)行修改


另外切片數(shù)據(jù)也會返回“視圖”對象。
3.Deep Copy(深度復(fù)制)
d = a.copy()
這會創(chuàng)建一個全新的數(shù)據(jù)d,與a沒有關(guān)系d不能修改a的任何值。
一、axis 函數(shù)怎么理解?
在numpy的許多函數(shù)中都有axis這么個參數(shù)怎么理解?
Axis參數(shù)決定一些計(jì)算規(guī)則的方向,如聚合類函數(shù)中的sum,可以根據(jù)axis的值來決定求和方向。0代表最外層括號的高維度方向以此類推,這里只有0,1,2三個維度,因此2代表最內(nèi)層括號的維度,不同方向計(jì)算結(jié)果如下圖所示










暫無數(shù)據(jù)