numpy的基本屬性,基于矩陣的運(yùn)算
最簡(jiǎn)答的初始化:
array=np.array([[1,2,3], [2,3,4]])
array.ndim, 返回是一維數(shù)組還是二維數(shù)組
array.shape 返回shape赘方,是一個(gè)元組纽什,第一個(gè)是行,第二個(gè)是列
array.size 返回元素的數(shù)目
創(chuàng)建array
- np.array([], dtype=np.int) 直接使用list來(lái)初始化泰鸡,可以使用dtype來(lái)定義數(shù)據(jù)格式
- np.zero((n,m)) 提供shape創(chuàng)建一個(gè)全零的矩陣蚓聘,shape必須是元組
- np.ones((n,m))
- np.empty((n,m))
- np.arange(n, m, step) 和python的range一樣,可以指定起始值氢伟,結(jié)束值和步長(zhǎng)
- np.arange(n, m, step).reshape(n,m) 將range生成的一維數(shù)組reshape成指定了二維矩陣
- np.linspace(n, m, s).reshape(n,m) 生成線段榜轿,這里s指的是總共生成多少個(gè)數(shù)據(jù),由linspace來(lái)自動(dòng)計(jì)算數(shù)值朵锣,數(shù)值平均分配
dtype=np.int 默認(rèn)64位
dtype=np.int32
dtype=np.float
dtype=np.float32
基礎(chǔ)運(yùn)算:
減法谬盐,加法,b**2诚些,np.sin(a), np.cos(a), 每個(gè)元素逐個(gè)相減
比較運(yùn)算:b<3 返回一個(gè)有相同長(zhǎng)度的列表飞傀,里面的內(nèi)容是Ture和False
矩陣運(yùn)算
a * b 矩陣點(diǎn)乘
np.dot(a.b) 矩陣相乘
a.dot(b) 矩陣相乘
np的常用運(yùn)算
- np.sum(), np.min(), np.max() 獲取相應(yīng)的值
- np.argmin(), np.argmax(),獲取相應(yīng)的值的索引诬烹,使用一維索引
- 獲取矩陣的平均值 np.mean(a) 或者 a.mean() 或者 np.average(a) -- 老版本的方法
- 獲取中位數(shù) np.median(a)
- 累加 np.cumsum(a) 所有元素都等于它之前的元素的和砸烦,返回 一個(gè)一維數(shù)組
- 累差,后一個(gè)值和它的差值 np.diff(a), 所以4x4 矩陣作完diff以后就會(huì)變成 3x4
- 找到非0的數(shù)值 np.nonzero(a) 返回兩個(gè)list绞吁,第一個(gè)list代表行的index幢痘,第二個(gè)list代表列的index
- 排序np.sort(a) 默認(rèn)是按行排序
- 矩陣的轉(zhuǎn)置, np.transpose(a) 或者 a.T
- 矩陣relu類似操作 np.clip(a, 5, 9) 所有小于5的都等于5家破,所有大于9的都等于9
可以指定axis來(lái)指定對(duì)列或者行操作 np.sum(a, axis=1)
np.random.random 隨機(jī)多維序列颜说,可以指定shape
np.random.randn 隨機(jī)一維序列
np的索引
和列表一樣np可以對(duì)位置進(jìn)行索引
a[2] 對(duì)于一維數(shù)組那就是返回一個(gè)元素,對(duì)于二維數(shù)組就是返回一個(gè)list第二行的所有內(nèi)容
a[1,1] 等同于 a[1][1]
可以使用冒號(hào)來(lái)代表一行所有的數(shù)或者一個(gè)范圍汰聋, a[1, :] 或者 a[:, 2] 或者 a[1, 2:4]
np中的矩陣可以直接使用到for循環(huán)中门粪,對(duì)行迭代。
對(duì)列迭代可以使用轉(zhuǎn)置來(lái)treaky實(shí)現(xiàn)烹困,對(duì)每個(gè)項(xiàng)目迭代的話可以使用a.flat (返回a中所有元素的迭代器) 然后在用for循環(huán)
np的合并
np.vstack((a, b)) 使用元組來(lái)定義需要合并的array, 上下合并
np.hstack((a, b)) 左右合并
np.concatenate((A,B)) 多個(gè)array進(jìn)行縱向或者橫向的合并玄妈,使用axis來(lái)指定
np的分割
np.split(a, 2, axis=1) 分割層兩部分. 分成的每個(gè)子項(xiàng)都要想等
np.array_split(a, 3) 可以進(jìn)行不等項(xiàng)的分割
np.vsplit() 進(jìn)行縱向分割
np.hsplit() 進(jìn)行橫向分割
np的copy
直接使用等號(hào)的話 b=a 那么b和a就是指向同一個(gè)內(nèi)存塊
b=a.copy() 這樣會(huì)產(chǎn)生一個(gè)和a無(wú)關(guān)的b