實(shí)驗(yàn)環(huán)境:建立在Python3的基礎(chǔ)之上
numpy提供了一種數(shù)據(jù)類型,提供了數(shù)據(jù)分析的運(yùn)算基礎(chǔ),安裝方式
pip install numpy
導(dǎo)入numpy到python項(xiàng)目
import numpy as np
本文以案例的方式展示numpy的基本語(yǔ)法,沒(méi)有介紹語(yǔ)法的細(xì)枝末節(jié),筆者認(rèn)為通過(guò)查閱案例就能掌握基本用法。
numpy數(shù)組的基本概念
numpy默認(rèn)所有元素具有相同的數(shù)據(jù)類型,如果類型不一致,會(huì)對(duì)其進(jìn)行優(yōu)化。如果元素類型不同,將統(tǒng)一成一種類型,優(yōu)先級(jí):str>float>int
import numpy as np
t_list = [1, 1.2, "hello"]
print(t_list)
t_list = np.array([1, 1.2, "hello"])
print(t_list)
t_list = np.array([1, 1.2])
print(t_list)
定義數(shù)組的時(shí)候,可以聲明數(shù)據(jù)類型
t_list = np.array([1,2,3])
print(t_list)
t_list = np.array([1,2,3], dtype=np.float32)
print(t_list)
numpy構(gòu)造數(shù)組
1、np.ones(shape, dtype)
shape=(m,n) m行n列
shape=(m) m個(gè)元素的一維數(shù)組
shape=(m,) m個(gè)元素的一維數(shù)組
shape=(m,1) m行1列的二維數(shù)組 [[1],[2],[3]]
shape=(1,m) 1列m行的二維數(shù)組 [[1,2,3]]
t_list = np.ones(shape=(5,4), dtype=np.int32)
print(t_list)
2、np.zeros(shape, dtype)
t_list = np.zeros(shape=(5,3), dtype=np.int32)
print(t_list)
3、np.full(shape, fill_value, dtype)
t_list = np.full(shape=(2,3,4), fill_value=10, dtype=np.int32)
print(t_list)
4、np.eye(N,M,k,dtype)
# 單位矩陣
t_list = np.eye(N=5, dtype=np.float32)
print(t_list)
# 控制行列的矩陣
t_list = np.eye(N=5, M=4, dtype=np.int32)
print(t_list)
# 1向左偏移
t_list = np.eye(N=5, k=-1)
print(t_list)
5、np.linspace(start, stop, num, endpoint=True, retstep=False, dtype)
# 共11個(gè)數(shù)
t_list = np.linspace(0, 10, 10)
print(t_list)
# 共10個(gè)數(shù)
t_list = np.linspace(0, 10, 10, endpoint=False)
print(t_list)
6、np.arange(start, stop, step, dtype)
t_list = np.arange(1,10,2)
print(t_list)
7、np.random.randint(low, high=None, size=None, dtype)
# 隨機(jī)數(shù)
t_list = np.random.randint(1, 100, size=(5,4))
print(t_list)
8、np.random.random(size)
# 0到1之間的隨機(jī)數(shù)
t_list = np.random.random(size=(5,4))
print(t_list)
9、np.random.permutation()
# 隨機(jī)索引
t_list = np.random.permutation(10)
print(t_list)
10、屬性
t_list = np.full(shape=(2,3,4), fill_value=10, dtype=np.int32)
print(t_list)
# 維度
print(t_list.ndim)
# 形狀
print(t_list.shape)
# 大小
print(t_list.size)
# 元素類型
print(t_list.dtype)
數(shù)組的索引和切片
1、索引
t_list = np.array([1,2,3,4,5])
# 以下標(biāo)的方式訪問(wèn)
print(t_list[0])
# 以列表索引的方式訪問(wèn)
print(t_list[[0,1,2,0,1,3]])
# 以布爾類型訪問(wèn),得到數(shù)組中True的值,但布爾列表的長(zhǎng)度需要與數(shù)組長(zhǎng)度相同
print(t_list[[True,False,True,False,False]])
# 數(shù)組可以做運(yùn)算
print(t_list > 3)
print(t_list[t_list > 3])
t_list = np.array([[1,20,3],[2,30,4],[3,40,5]])
print(t_list[0][1])
# 下標(biāo)可以放在一起
print(t_list[0,1])
# 高維數(shù)組
t_list = np.random.randint(1, 10, size=(3,4,5), dtype=np.int32)
print(t_list)
print(t_list[1])
print(t_list[1,1])
print(t_list[1,1,1])
2、切片
t_list = np.random.randint(1,100,size=(10), dtype=np.int32)
print(t_list)
# 切片
print(t_list[2:5])
t_list = np.random.randint(1,100,size=(5,6), dtype=np.int32)
print(t_list)
# 行切片
print(t_list[1:3])
# 列切片
print(t_list[:,1:3])
t_list = np.random.randint(1,100,size=(3,6,5), dtype=np.int32)
print(t_list)
print(t_list[:,:,1:3])
3、變形
t_list = np.random.randint(1,100,size=(20), dtype=np.int32)
# 一維數(shù)組變形為二維數(shù)組,變形需要注意,前后兩個(gè)數(shù)組的元素個(gè)數(shù)相同
print(t_list.reshape(4,5))
4、連接
t_list = np.random.randint(1,100,size=(4,4))
t_list2 = np.random.randint(1,100,size=(4,4))
# 橫向連接,要求兩個(gè)數(shù)組的橫列大小相同
t_list = np.concatenate((t_list,t_list2), axis=1)
# 縱向連接,要求兩個(gè)數(shù)組的橫列大小相同
t_list = np.concatenate((t_list,t_list2), axis=0)
t_list = np.random.randint(1,100,size=(4,4))
t_list2 = np.random.randint(1,100,size=(4,4))
np.hstack((t_list,t_list2))
np.vstack((t_list,t_list2))
5、切分
t_list = np.random.randint(1,100,size=(4,8))
# 橫向切分,等份切分
part1, part2 = np.split(t_list, indices_or_sections=2)
print(part1)
print(part2)
# 縱向切分
part1, part2 = np.split(t_list, indices_or_sections=2, axis=1)
print(part1)
print(part2)
t_list = np.random.randint(1,100,size=(5,7))
part1, part2, part3 = np.split(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)
part1, part2, part3 = np.split(t_list, indices_or_sections=[2,3],axis=1)
print(part1)
print(part2)
print(part3)
part1, part2, part3 = np.vsplit(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)
part1, part2, part3 = np.hsplit(t_list, indices_or_sections=[2,3])
print(part1)
print(part2)
print(part3)
6、復(fù)制
ct_list = t_list.copy()
ct_list[1,2] = 1000
print(t_list)
print(ct_list)
聚合操作
1、求和
t_list = np.random.randint(1,100,size=(4,8))
# 求和
print(t_list.sum())
# 求均值
print(t_list.mean())
# 求最值
print(t_list.max())
print(t_list.min())
# 最值索引
print(t_list.argmax())
print(t_list.argmin())
# 標(biāo)準(zhǔn)方差
print(t_list.std())
# 方差
print(t_list.var())
# 中位數(shù)
print(np.median(t_list))
2、布爾運(yùn)算
t_list = np.array([True, False, True, True])
# 只要存在一個(gè)True,返回True
print(t_list.any())
# 全部為Ture,返回True
print(t_list.all())
3、矩陣
t_list = np.array([[1,2,3],[2,3,4]])
t_list2 = np.array([[1,2],[2,3],[3,4]])
print(np.dot(t_list, t_list2))
以上是numpy的基本操作,numpy提供了操作數(shù)組的運(yùn)算基礎(chǔ),復(fù)雜業(yè)務(wù)處理,還需要Pandas的加入。
評(píng)論
查看更多