Numpy 入门
一.ndArray初始化
1. 使用列表生成一维ndArray
import numpy as np
array1 = np.array([1, 2, 3])
2. 使用列表生成二维ndArray
import numpy as np
array2 = np.array([[1, 2, 3],[2, 3, 4]])
3. 生成随机的k个范围在[m,n)的一维ndArray
import numpy as np
# 生成一个一维ndArray,里面有5个元素,都是整数,且范围为[0,10)
array3 = np.random.randint(0, 10, size=5)
# 可简化成 array3 = np.random.randint(10, size=5)
4. 生成有序的 ndArray,范围为[m,n),且步长为t,顺序递增
import numpy as np
# 生成有序的一维ndArray,范围在[1,10),且步长为1
# 可简化成 array4 = np.arange(1, 10)
array4 = np.arange(1, 10, 1)
# 结果为: [1 2 3 4 5 6 7 8 9]
二. 二维ndArray九宫格取数
ndArray的取数操作 假设有一个二维的ndArray,且里面数据如下所示
import numpy as np
array5 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 问题:如何快速利用array5,得到一个新的ndArray,且里面元素为[[4, 5, 6], [7, 8, 9]]
# 分析: array5有3列3行,分别记为第0,1,2列,0,1,2行,则需要取第1行到第2行的第0列到第2列
# 答案如下
array6 = array5[1:3,0:3]
# 解析答案:其中1:3表示从第1行到第3行,包括第1行,不包括第3行,0:3表示从第0列到第3列,包括第0列,不包括第3列
# 第一次简化:如果出现最后一行+1的行号或列号,那么可以进行省略,那么3可以省略,array6另一种写法为
array7 = array5[1:,0:]
# 第二次简化:如果出现0的行号或列号,那么可以进行省略,那么0可以省略,array7另一种写法为
array8 = array5[1:,:]
# 第三次简化:如果只剩下:,那么可以进行省略,那么:可以省略,array8另一种写法为
array9 = array5[1:,]
三. ndArray的连接
1. 等维度连接
import numpy as np
array10 = np.array([1, 2, 3])
array11 = np.array([4, 5, 6])
array12 = np.concatenate([array10, array11])
print(array12) #[1 2 3 4 5 6]
2. 多维度连接
import numpy as np
array13 = np.array([1, 2, 3])
array14 = np.array([4, 5, 6])
array15 = np.array([array13, array14])
print(array15) #[[1 2 3] [4 5 6]]
3. 值相加
import numpy as np
array16 = np.array([1, 2, 3])
array17 = np.array([4, 5, 6])
array18 = np.array([array16, array17])
print(array18) # [5 7 9]
四. 一维ndArray分割
1.均分
import numpy as np
array19 = np.array([0, 1, 2, 3, 4, 5])
array19_1,array19_2, array19_3 =np.split(array19, 3)
print(array19_1) # [0 1]
print(array19_2) # [2 3]
print(array19_3) # [4 5]
2.按指定长度均分
import numpy as np
array20 = np.array([0, 1, 2, 3, 4, 5])
array20_1,array20_2,array20_3 = np.split(array20,[2,3])
print(array20_1) #[0 1]
print(array20_2) #[2]
print(array20_3) #[3 4 5]
五. ndArray排序
1.一维ndArray数字排序(小到大)
import numpy as np
array21 = np.array([6, 3, 4, 1, 5, 2])
array22 = np.sort(array21)
print(array22) #[1 2 3 4 5 6]
2.一维ndArray数字排序(大到小)
import numpy as np
array23 = np.array([6, 3, 4, 1, 5, 2])
array24 = np.sort(array23)[::-1]
print(array24) #[6 5 4 3 2 1]
3.依照某个字段来排序
import numpy as np
dt = [('name', 'S10'), ('score', 'int')]
dv = [('zhangsan', 12), ('lisi', 10), ('wangwu', 13)]
array25 = np.array(dv, dtype=dt)
array26 = np.sort(array25, order='score')[::-1]
print(array26)
六.计算
# 1.求和
import numpy as np
print(np.array([1,2,3]).sum())
# 2.求均值
print(np.array([1,2,3]).mean())
### 3.求最大值
print(np.array([1,2,3]).max())
# 4.求最小值
print(np.array([1,2,3]).min())
七.综合取值
import numpy as np
name = np.array(['zhangsan', 'lisi', 'wangwu', 'chengliu', 'yangqi'])
gender = np.array(['male', 'female', 'male', 'male', 'female'])
height = np.array([160, 180, 172, 175, 169])
weight = np.array([70, 60, 70, 60, 76])
score_math = np.array([100, 70, 59, 40, 100])
print(name[weight > 50]) #取体重超过50的人
print(name[gender == 'male']) #取男生