国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Numpy基礎(chǔ)筆記(包括基礎(chǔ)函數(shù)使用)

2019-11-14 11:49:16
字體:
供稿:網(wǎng)友
http://blog.csdn.net/hickai/article/details/23431843

理解多維矩陣的"求和"、"平均"操作確實太惡心了,numpy提供的函數(shù)里還有一堆參數(shù),搞得暈頭轉(zhuǎn)向的,這里做個筆記,提醒一下自己, 下面是例程

import numpy as npX = np.array([[1, 2], [4, 5], [7, 8]])PRint np.mean(X, axis=0, keepdims=True)print np.mean(X, axis=1, keepdims=True)

結(jié)果是分別是

[[ 1.5] [[ 4. 5.]] [ 4.5] [ 7.5]]

我個人比較raw的認(rèn)識就是,axis=0,那么輸出矩陣是1行,求每一列的平均(按照每一行去求平均);axis=1,輸出矩陣是1列,求每一行的平均(按照每一列去求平均)。還可以這么理解,axis是幾,那就表明哪一維度被壓縮成1。

再舉個更復(fù)雜點的例子,比如我們輸入為batch = [128, 28, 28],可以理解為batch=128,圖片大小為28×28像素,我們相求這128個圖片的均值,應(yīng)該這么寫

m = np.mean(batch, axis=0)

輸出結(jié)果m的shape為(28,28),就是這128個圖片在每一個像素點平均值。

 

Numpy基礎(chǔ)筆記

標(biāo)簽: Pythonnumpy2014-04-11 11:17 27170人閱讀 評論(3) 收藏 舉報 分類:

    Numpy簡介

    Numpy(Numerical Python的簡稱)是高性能科學(xué)計算和數(shù)據(jù)分析的基礎(chǔ)包。其部分功能如下:

    ①ndarray,一個具有矢量算術(shù)運算和復(fù)雜廣播能力的快速且節(jié)省空間的多維數(shù)組。    ②用于對整組數(shù)據(jù)進行快速運算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)(無需編寫循環(huán))。    ③用于讀寫磁盤數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具。    ④線性代數(shù)、隨機數(shù)生成以及傅里葉變換功能。

    ⑤用于集成由C、C++、Fortran等語言編寫的代碼的工具。

    創(chuàng)建數(shù)組

    創(chuàng)建數(shù)組最簡單的辦法是使用array函數(shù)。它接受一切序列型的對象(包括其他數(shù)組),然后產(chǎn)生一個新的含有傳入數(shù)據(jù)的NumPy數(shù)組。以一個列表的轉(zhuǎn)換為例:

[python] view plain copy 在CODE上查看代碼片data1=[6,7.5,8,0,1]    #創(chuàng)建列表  arr1=np.array(data1)    #轉(zhuǎn)換為數(shù)組  arr1.dtype    #數(shù)據(jù)類型保存在dtype對象中  data2=[[1,2,3,4],[5,6,7,8]]    #創(chuàng)建嵌套序列(由等長列表組成的列表)  arr2=np.array(data2)    #轉(zhuǎn)換為多維數(shù)組  np.zeros(10)    #創(chuàng)建指定長度(10)的全0數(shù)組  np.ones((3,6))    #創(chuàng)建指定長度的(3行6列二維)的全1數(shù)組  range(10)    #創(chuàng)建指定數(shù)量的順序列表(內(nèi)置函數(shù),默認(rèn)0開始)  arange(10)    #創(chuàng)建指定數(shù)量的順序數(shù)組  eye(10)    #創(chuàng)建一個正方的N×N單位矩陣  arr1=np.array([1,2,3],dtype=np.float64)    #解釋為特定數(shù)據(jù)類型   %20  數(shù)組和標(biāo)量之間的運算

[python] view%20plain copy arr=np.array([[1.,2.,3.],[4.,5.,6.]])    #創(chuàng)建二維數(shù)組  arr*arr    #行列號相同的數(shù)組元素間運算  arr-arr  1/arr  arr*0.5   %20  基本的索引與切片

[python] view%20plain copy arr=np.arange(10)  arr[5]    #索引第6個元素  arr[5:8]    #索引第6到第9個元素作為數(shù)組  arr[5:8]=12    #令第6到第9個元素等于12  arr_slice=arr[5:8]    #數(shù)組切片是原始數(shù)據(jù)的視圖,視圖上的任何修改都會反映到原數(shù)組  arr_slice[:]=64    #將數(shù)組切片的全部元素改為64  arr[5:8].copy()    #得到數(shù)組切片的一份副本  arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])  arr2d[2]    #索引二維數(shù)組第3行  arr2d[0][2]  arr2d[0,2]    #等價索引1行3列元素  arr2d[:2]    #索引第1行和第2行(不含第3行)  arr2d[:,:1]    #索引第1列  arr2d[:-2]    #使用負(fù)數(shù)索引將從尾部開始選取行   %20  數(shù)組轉(zhuǎn)置和軸對換 %20  轉(zhuǎn)置(transpose)是重塑的一種特殊形式,它返回的是源數(shù)據(jù)的視圖(不會進行復(fù)制操作)。

[python] view%20plain copy arr=np.arange(15).reshape((3,5))    #生成順序數(shù)組,后整形為3行5列  arr.T    #轉(zhuǎn)置  arr=np.random.randn(6,3)    #randn函數(shù)生成一些正態(tài)分布的隨機數(shù)組(6行3列)  np.dot(arr.T,arr)    #利用np.dot計算矩陣內(nèi)積XTX   %20  通用函數(shù):快速的元素級數(shù)組函數(shù)

 %20 %20通用函數(shù)(即ufunc)是一種對ndarray中的數(shù)據(jù)執(zhí)行元素級運算的函數(shù)。

[python] view%20plain copy arr=np.arange(10)  np.sqrt(arr)    #計算各元素的平方根(arr**0.5)  exp  #計算各元素指數(shù)ex;  abs  #絕對值;  np.add(x,y)  #x、y數(shù)組中對應(yīng)元素相加;  subtract #相減;  mult    利用數(shù)組進行數(shù)據(jù)處理

    用數(shù)組表達式代替循環(huán)的做法,通常稱為矢量化    將條件邏輯表述為數(shù)組運算

    Numpy.where函數(shù)是三元表達式x if condition else y的矢量化版本

[python] view plain copy 在CODE上查看代碼片xarr=np.array([1.1,1.2,1.3,1.4,1.5])    #兩個數(shù)值數(shù)組  yarr=np.array([2.1,2.2,2.3,2.4,2.5])  cond=np.array([True,False,True,True,False])    #一個布爾數(shù)組  result=np.where(cond,xarr,yarr)    #三元表達式   %20  數(shù)學(xué)和統(tǒng)計方法 %20 %20可以通過數(shù)組上的一組數(shù)學(xué)函數(shù)對整個數(shù)組或某個軸向的數(shù)據(jù)進行統(tǒng)計計算。Sum、mean以及標(biāo)準(zhǔn)差std等聚合計算(aggregation,通常叫做約簡(reduction))既可以當(dāng)做數(shù)組的實例方法調(diào)用,也可以當(dāng)做頂級NumPy函數(shù)使用:

[python] view%20plain copy arr=np.random.randn(5,4)  arr.mean();  np.mean(arr);  arr.sum();  arr.mean(axis=1)    #計算該軸上的統(tǒng)計值(0為列,1為行)   %20  用于布爾型數(shù)組的方法 %20 %20布爾值會被強制轉(zhuǎn)換為1(True)和0(False)。因此,sum經(jīng)常被用來對布爾型數(shù)組中的True值計數(shù):[python] view%20plain copy arr=randn(100)  (arr>0).sum()    #正值的數(shù)量  bools.any()    #用于測試數(shù)組中是否存在一個或多個True  bools.all()    #用于測試數(shù)組中所有值是否都是True   %20  排序 %20 %20跟Python內(nèi)置的列表類型一樣,NumPy數(shù)組也可以通過sort方法就地排序(修改數(shù)組本身)。

[python] view%20plain copy arr=randn(8)  arr.sort()  arr=randn(5,3)  arr.sort(0)  #二維數(shù)組按列排序;  arr.sort(1)  #二維數(shù)組按行排序;   %20  唯一化[python] view%20plain copy ints=np.array([3,3,3,2,2,1,1,4,4])  np.unique(names)    #找出數(shù)組中的唯一值并返回已排序的結(jié)果   %20  用于數(shù)組的文件輸入輸出 %20 %20Numpy能夠讀寫磁盤上的文本數(shù)據(jù)或二進制數(shù)據(jù)。

[python] view%20plain copy arr=np.arange(10)  np.save(‘some_array’,arr)  #數(shù)組以未壓縮的原始二進制格式保存在.npy文件中  np.load(‘some_array’)  #通過np.load讀取磁盤上的數(shù)組  np.savez(‘a(chǎn)rray_archive.npz’,a=arr,b=arr)  #將多個數(shù)組以保存在一個壓縮文件中  a=np.arange(0,12,0.5).reshape(4,-1)  np.savetxt(‘E://knakan//a.txt’,a)  #缺省按照’%.18e’格式保存數(shù)據(jù),以空格分隔  np.loadtxt(‘E://kankan//a.txt’)  np.savetxt(‘E://kankan//a.txt’,a,fmt=”%d”,delimiter=”,”)  #改為保存為整數(shù),以逗號分隔  np.loadtxt(‘E://kankan//a.txt’,delimiter=”,”)  #讀入時也需指定逗號分隔   %20  線性代數(shù)

[python] view%20plain copy 派生到我的代碼片x=np.array([[1.,2.,3.],[4.,5.,6.]])  y=np.array([[6.,23.],[-1,7],[8,9]])  x.dot(y)  #矩陣乘法,相當(dāng)于np.dot(x,y)  【參考文獻】

[1]. 利用Python進行數(shù)據(jù)分析,wes McKinney著,唐學(xué)韜譯,2014年,機械工業(yè)出版社


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武鸣县| 波密县| 肇庆市| 仁布县| 怀远县| 顺义区| 长宁县| 吴堡县| 祁东县| 兴安县| 平塘县| 瑞昌市| 廉江市| 满城县| 胶州市| 秦安县| 雷波县| 柞水县| 乐安县| 神池县| 泊头市| 海淀区| 上犹县| 长宁区| 岫岩| 察哈| 吉木萨尔县| 惠水县| 铁岭县| 武山县| 平利县| 湖北省| 汉沽区| 漠河县| 从化市| 汽车| 京山县| 蛟河市| 岐山县| 津市市| 曲靖市|