在使用python時我們經常會處理陣列,有的時候是複製有的時候不是,這裡也是初學者最容易誤解的地方,簡單講,可以分為下面三種情況:
import numpy as npa = np.arange(12) #a為乙個序列
b = a #沒有建立新的物件
print('a的shape為:', a.shape) # 輸出a的尺寸
print('b是a嗎?', b is a) #ab 為同乙個物件的兩個名字
b.shape = 3, 4 #將b的shape改變
print('a的shape變為:', a.shape) #a的shanpe也跟著改變了
輸出結果
a的shape為: (12,)b是a嗎? true
a的shape變為: (3, 4)
不同的陣列物件可以分型相同的資料,view方法建立乙個與原來陣列相同的新物件
a = np.arange(12)c = a.view() # 建立乙個和a一樣的c
print('c未改變時a的shape為:', a.shape) # 輸出a的尺寸
print('c是a嗎?', c is a)
print('c 是以a為基礎建立的嗎', c.base is a)
c.shape = 3, 4
print('c改變後a的shape為:', a.shape)
輸出結果:
c是a嗎? falsec 是以a為基礎建立的嗎 true
a的shape為: (12,)
a的shape為: (12,)
這個時候d是a的複製,只是單純的複製,兩者沒有一點關係
a = np.arange(12)d = a.copy() # 建立乙個和a一樣的c
print('d是a嗎?', d is a)
print('d是以a為基礎建立的嗎', d.base is a)
輸出結果:
d是a嗎? falsed是以a為基礎建立的嗎 false
使用python numpy線性回歸
線性回歸的原理不再贅述,本文給出了乙個簡單的使用梯度下降的線性回歸模擬。import numpy as np def weightsupdate data,w,b,learning rate 0.01 for x0,y0 in data y np.dot x0,w b w gradient y y0...
對python numpy陣列中冒號的使用方法詳解
python中冒號實際上有兩個意思 1.預設全部選擇程式設計客棧 2.指定範圍。下面看例子 定義陣列 x array 1,2,www.cppcns.com3,4 5,6,7,8 9,10,11,12 程式設計客棧13,14,15,16 17,18,19,20 輸出為5x4二維陣列 第一種意思,預設全...
Python Numpy陣列儲存
numpy提供了幾種資料儲存的方法。以3 4陣列a為例 這種方法只能儲存為二進位制檔案,且不能儲存當前資料的行列資訊,檔案字尾不一定非要是bin,也可以為txt,但不影響儲存格式,都是二進位制。這種儲存方法對資料讀取有要求,需要手動指定讀出來的資料的的dtype,如果指定的格式與儲存時的不一致,則讀...