數(shù)組是python的主角之一,以下會記錄數(shù)組的創(chuàng)建方法和應(yīng)用
Numpy——用它來進(jìn)行數(shù)組創(chuàng)建
在開始之前先來了解Numpy,NumPy(Numerical Python) 是 Python 語言的一個擴(kuò)展程序庫,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。
Numpy怎么安裝呢?
最簡單的方法是下載以下的 Python 發(fā)行版,它們包含了所有的關(guān)鍵包(包括 NumPy,SciPy,matplotlib,IPython,SymPy 以及 Python 核心自帶的其它包)
由于我們已經(jīng)安裝了 Anaconda: 免費 Python 發(fā)行版,所以自帶了Numpy,不用另外安裝了。
如果沒有安裝Numpy,可以通過以下pip語句安裝:
//安裝
! pip install numpy
//導(dǎo)入
import numpy as np
創(chuàng)建一個 ndarray(N維數(shù)組) 只需調(diào)用 NumPy 的 array 函數(shù)即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
參數(shù)說明:
object 數(shù)組或嵌套的數(shù)列
dtype 數(shù)組元素的數(shù)據(jù)類型,可選
copy 對象是否需要復(fù)制,可選
order 創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))
subok 默認(rèn)返回一個與基類類型一致的數(shù)組
ndmin 指定生成數(shù)組的最小維度
數(shù)組產(chǎn)生
數(shù)組產(chǎn)生方法:
- 通過list
- 通過tuple
- 通過list of list
- 通過list of tuple
- 通過function
- arange-等差數(shù)組
- linspace-等差數(shù)組
- logspace-等比數(shù)組
- zeros-全0數(shù)組
- ones-全1數(shù)組
- random-隨機(jī)數(shù)組
自定義數(shù)組
#引入numpy
import numpy as np;
#list產(chǎn)生數(shù)組
np.array([3,2])
#list of list
np.array([[3,2]])
#二維list
np.array([3,2],ndmin=2)
#tuple
np.array((3,2))
#二維list
np.array((3,2),ndmin=2)
#二維數(shù)組
np.array([[3,2],[3,4]])
np.array([(2,3),(3,4)])
#設(shè)置數(shù)據(jù)類型
np.array([[1,2],[3,4]],dtype='float')
np.array([[1,2],[3,4]],dtype='str')
等差數(shù)組
1、使用arange函數(shù),參數(shù)為開始、結(jié)束、等差值

使用reshape函數(shù)可以設(shè)置維度,參數(shù)為行數(shù)、列數(shù)

當(dāng)列數(shù)為-1時,自動計算適配,不用我們自己計算

設(shè)置數(shù)據(jù)類型

2、使用linspace設(shè)置等差數(shù)列,參數(shù)為開始、結(jié)束,數(shù)據(jù)個數(shù)

等比數(shù)列
使用lospace設(shè)置等比數(shù)列,參數(shù)為開始、結(jié)束,數(shù)據(jù)個數(shù),等比base(默認(rèn)是10)

全0\1數(shù)組

隨機(jī)數(shù)組

需要固定隨機(jī)結(jié)果,設(shè)置seed:

隨機(jī)生成正太分布數(shù)據(jù)

隨機(jī)生成整數(shù)數(shù)據(jù)

數(shù)組屬性
ndarray.ndim 秩,即軸的數(shù)量或維度的數(shù)量
ndarray.shape 數(shù)組的維度,對于矩陣,n 行 m 列
ndarray.size 數(shù)組元素的總個數(shù),相當(dāng)于 .shape 中 n*m 的值
ndarray.dtype ndarray 對象的元素類型
ndarray.itemsize ndarray 對象中每個元素的大小,以字節(jié)為單位
ndarray.flags ndarray 對象的內(nèi)存信息
ndarray.real ndarray元素的實部
ndarray.imag ndarray 元素的虛部
ndarray.data 包含實際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個屬性。

數(shù)組轉(zhuǎn)置

數(shù)據(jù)選擇
一維數(shù)組選擇
image.png
-
索引選擇
image.png -
切片選擇:切出一部分,參數(shù):頭索引、尾索引,間隔
image.png
多維數(shù)組選擇
image.png
-
索引選擇
image.png -
切片選擇
注意:冒號和三個省略號作用一致
image.png
條件選擇

數(shù)組計算

a=np.array([[1,2,3,4],[5,6,7,8]])
#求和
np.sum(a)
#按行求和
np.sum(a,axis=1)
#按列求和
np.sum(a,axis=0)
#累積求和
np.cumsum(a)
#按行累積
np.cumsum(a,axis=1)
#求均值
np.mean(a)
#按行求均值
np.mean(a,axis=1)
#求均值
np.average(a)
#加權(quán)求均值
np.average(a,axis=1,weights=[1,2,3,4])
#求中位數(shù)
np.median(a)
#按行求中位數(shù)
np.median(a,axis=1)
#求百分位數(shù)
np.percentile(a,q=[50,100])
#求方差
np.var(a)
#求標(biāo)準(zhǔn)差
np.std(a)
#求最小值
np.min(a)
#求最大值
np.max(a)
#按列求最小值
np.min(a,axis=0)
#求最大值索引
np.argmax(a)
#四舍五入
np.round([1.3,4.5,3.9])
np.floor([1.3,4.5,3.9])
np.ceil([1.3,4.5,3.9])
#排序
np.sort(a)
#倒序
-np.sort(-a)
#選擇
np.where(a>50,">50",'<=50')
#提取
np.extract(a>50,a)
數(shù)組拷貝
-
深拷貝:copy函數(shù),修改拷貝數(shù)組,不會影響原來的數(shù)組
image.png -
淺拷貝:view函數(shù),拷貝出來的數(shù)組,被修改會同時修改原來的數(shù)組
image.png
image.png
image.png
數(shù)組展開和合并
- 二維數(shù)組展開成1維數(shù)組
-
flat屬性展開
flatten方法展開(可以有order屬性,order='C'按行展開(默認(rèn)),order='F'按列展開)
image.png
image.png
image.png -
兩個數(shù)組合并:按行合并(hstack函數(shù),兩個數(shù)組必須維度相同)
image.png
String基本操作
-
大小寫
image.png -
分割合并
使用char包中的split函數(shù)分割,默認(rèn)空格分割
image.png
使用join函數(shù)合并
image.png -
尋找替換
image.png
image.png
數(shù)據(jù)保存
-
單文件保存,npx
image.png
image.png -
多文件保存,npz
image.png
image.png
image.png
image.png -
txt保存
image.png
image.png


























