安装
1.以管理员的形式打开cmd
2.使用以下命令查看是否安装成功
创建
1.在vscode进行导入numpy模块
import numpy as np
2.创建数组
使用array创建
#使用array创建一维数组
list01 = [1,2,3,4]
np01 = np.array(list01)
print(np01)
#使用array创建二维数组
list02 = [[1,2,3,4],[5,6,7,8]]
np02 = np.array(list02)
print(np02)
#使用array创建三维数组
list03 = [[[1,2,3,4],[5,6,7,8],[9,10,11,12]]]
np03 = np.array(list03)
print(np03)
使用arange创建
arange(start,stop,step,dtype)
1.不写start,默认从0开始
2.左开右闭
3.step步长,不写默认是1
#一维数组
a = np.arange(10) #[0 1 2 3 4 5 6 7 8 9]
a = np.arange(2,10) #[2 3 4 5 6 7 8 9]
a = np.arange(1,10,2) #[1 3 5 7 9]
a = np.arange(1,10,2,dtype=float)
print(a)
#二维数组
#切记前面的12,必须满足3*4
np01 = np.arange(12).reshape(3, 4)
print(np01)
使用 random 创建数组
np.random.random() 生成0到1之间的随机数
#创建一维数组 size生成几个数据,可直接写4
np01= np.random.random(size=4) #[0.13475357 0.8088961 0.52055803 0.49706622]
#创建二维数组 size=(3,4) 3行4列 可用()和[] ,效果一样
np01= np.random.random((3,4))
#创建三维数组 两个三行四列
np01= np.random.random((2,3,4))
print(np01)
数组的索引和切片
1.普通索引切片
一维数组索引
list01= [1,2,3,4,5]
np01 = np.array(list01,dtype="int32")
print(np01)
"""
正向递增索引 从0开始
1, 2, 3, 4, 5 数据
0 1 2 3 4 索引
1.左开右闭
2.不写startIndex默认从0开始
"""
print(np01[0]) #1
print(np01[1:4]) #[2 3 4]
print(np01[1:5]) #[2 3 4 5]
print(np01[:5]) #[1 2 3 4 5]
"""
反向递减索引 从-1开始
1, 2, 3, 4, 5 数据
-5 -4 -3 -2 -1 索引
1.左开右闭
2.不写startIndex默认从0开始
"""
print(np01[-1]) #5
print(np01[-5:-1]) #[1 2 3 4]
print(np01[-5:]) #[1 2 3 4 5]
一维数组的切片
语法[start:stop:step]
list01= [1,2,3,4,5]
np01 = np.array(list01,dtype="int32")
print(np01)
#正向索引切片
print(np01[:])#从0到0
print(np01[3:])#从3开始到结尾
print(np01[:5])#从0开始到5结尾
print(np01[1:5:2])#步长是2
#反向索引切片
print(np01[::-1])#-1证明是反向获取
print(np01[-5:-2])
#正负一起使用
print(np01[-5:4]) #[1 2 3 4]
二维数组的索引
#创建二维数组
list01= [
[1,2],
[3,4],
[5,6],
[7,8]
]
np01= np.array(list01)
print(np01)
#print(np01.ndim) #查看维数
print(np01[1])#获取第二行
print(np01[1][1])#获取第二行第一列
二维数组的切片
np01[行-start:行-stop:行-step,列-start:列-stop:列-step]
#创建二维数组
list01= [
[1,2],
[3,4],
[5,6],
[7,8]
]
np01= np.array(list01)
print(np01)
print(np01[:,:])#所有行所有列
#所有行部分列
print(np01[:,1])#所有行第二列
print(np01[:,0:2])#所有行的第一列和第二列
#部分列所有行
print(np01[1,:])#获取第二行所有列
print(np01[0:2,:])#获取第一和二行所有列
print(np01[::2,:])#获取奇数行所有列
#部分行部分列
print(np01[1,1])#第二行第二列
#组合使用的时候改怎么办
#获取第三行第二列(6),第四行第一列(7)
#行写成元组放在前面,列写成元组放在后面
a= np01[(2,3),(1,0)]
print(a)
#负索引的使用
print(np01[-1])#最后一行
print(np01[::-1])#行倒序
print(np01[::-1,::-1])#行倒序,列倒叙
2.高级索引切片
一维数组的高级索引
np01[索引数组]
np01 = np.array([0,1,2,3,4,5,6,7,8,9])
print("---基础索引---")
print(np01[1])
print(np01[5])
print(np01[8])
index01 = np.array([1,5,8]) #创建一个索引
print("---高级索引---")
print(np01[index01]) #[1 5 8]
二维数组的高级索引
1.np01[行索引数组.列索引数组]
2.np01[list,list]
3.np01[list,数组]
np02 = np.arange(5,25).reshape(4,5)
print(np02)
print("---高级索引---")
row_index = np.array([0,1,2,3])
col_index = np.array([1,2,3,4])
print(np02[row_index,col_index]) #[ 6 12 18 24]
print("---使用list---")
row_list = [0,1,2,3]
col_list = [1,2,3,4]
print(np02[row_list,col_list]) #[ 6 12 18 24]
print("---list和数组混合---")
print(np02[row_index,col_list]) #[ 6 12 18 24]
print(np02[row_list,col_index]) #[ 6 12 18 24]
二维数组的高级切片
np02 = np.arange(5,25).reshape(4,5)
print(np02)
print(np02[0:2,1:5])
print("---高级切片-元组和切片---")
tuple01 = (0,1) #第一行和第二行
print(np02[tuple01,1:5])
print(np02[::2,1:4]) #基础切片[start,stop,step]
tuple01 = (0,2) #第一行和第二行
print(np02[tuple01,1:4])
3.布尔索引
一维数组的布尔索引
True False 和比较运算符进行结合使用
np01 = np.array([1,2,34,5,6,7,8])
print("基础索引")
print("布尔索引")
index01 = np.array([False,True,False,True,False,False,True])
print(np01[index01])
index02 = np.array([False,True,False,True,False,False,True])
booean_index = np01 > 3
print(booean_index)
print(np01[booean_index])
二维数组的布尔索引
np02 = np.arange(5,25).reshape(4,5)
print(np02)
print("---基础索引---")
print(np02[0:2,1:4])
'''
[[ 6 7 8]
[11 12 13]]
'''
print("---高级索引---")
row_index = np.array([0,1])
col_index = np.array([1,2,3])
print("---布尔索引---")
row_index = np.array([True,True,False,False])
col_index = np.array([False,True,True,True,False])
boolean01 = np.ix_(row_index,col_index)
print(np02[boolean01])
'''
[[ 6 7 8]
[11 12 13]]
'''