目录
(一)导入模块
import numpy as np
(二) 一维数组创建
np.array([1,2,3,4])
(三)二维数组创建
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
(四)数组属性
print('查看数组维度:',arr.ndim)
print('查看数组结构:',arr.shape)#返回元组带逗号
print('查看数组结构,几行:',arr2.shape[0])
print('查看数组结构,几列:',arr2.shape[1])
print('元素的个数:',arr2.size)
print('数组元素类型:',arr2.dtype)#int32
#3行4列 改4行3列
arr.shape = 4,3
print('重新设置shape后的数组为:\n',arr)
(五)专门用来构建数组的函数
1、arange类似于range函数
print(np.arange(0,1,0.1))#不包含终止值;0.表示浮点数
2.linspace:等差数列:
print(np.linspace(0,10,11))#终止值是包含的,生成等差数列,11个值是等差的
print(np.linspace(2,10,5))#终止值是包含的,生成等差数列,5个值是等差的
3、logspace:等比数列
a1 a3 a3 a4 a5 a6 这就是等比数列a2/a1 = a6/a5
print(np.logspace(0,2,3))#起始值和终止值都是指数默认底数base = 10
print(np.logspace(0,3,8,base=10))#10的0次幂,10的1次幂,10的2次幂,等比取8个,默认num=50个
4全零数组:
print(np.zeros((2,3)))#两行三列数组
5、全一数组
print(np.ones((4,5)))#传入的是我们的shape,元组
6、单位数组
print(np.eye(3))
print(np.eye(4))
7、对角数组(方阵,行列数相同)
print(np.diag([1,2,3,4]))##传入的是对角线上的值
(六)生成随机数
print(np.random.random(10))
print('生成正态分布数组:\n',np.random.randn(10,5))#十行五列
print('生成随机整数:\n',np.random.randint(2,10,size=[2,5]))
两行五列2,10区间范围,每个数都是大于等于2,小于10的
print('生成服从均匀分布的随机数:\n',np.random.rand(10,5))
(七)一维数组索引
arr = np.arange(10)
print(arr)
print(arr[8])
print(arr[0])
print(arr[:5])
print(arr[::2])
print(arr[1::2])
arr[:2] =100,101##修改元素的值
print(arr)
(八)二维数组索引
arr2=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,6]])
print(arr2.shape)
print(arr2[1,0])#取的是5
print(arr2[0,2:4])#取的是3,4
print(arr2[1,1:3])
print(arr2[0:2,1:3])#23和67
print(arr2[1])#取得是第二行所有值
print(arr2[1,:])#取得是第二行所有值
print(arr2[(1, 2),(1, 3)]) # 第一个括号(1,2)取第二行和第三行,第二个括号(1,3)分别在第二行第三行取下标为1和3的数
print(arr2[(1,2),(0,3)]) # 同上
(九)去重
arr4 = np.array(['关羽','张飞','刘备','刘备','张飞'])
print('去重之后的数组为:',np.unique(arr4))#数组方法去重
print(set(arr4))#集合去重
(十)重复
arr2=np.array([[1,2,3,4],[5,6,7,8],[7,8,9,6]])
(1)print(np.tile(arr2, 3))#对数组整体打包,不拆进行重复三次
(2)print(arr2.repeat(2,axis = 0))#按列进行重复两次,能拆分
(3)print(arr2.repeat(2,axis = 1))
(十一)数组展平
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
# 2将二维转化为一维
arr2=arr.ravel()
print('展平后的数组:',arr2)
# 3、flatten:
print('横向展平',arr.flatten()) #默认是'C'横向展平
print('纵向展平',arr4.flatten('F'))
(十二)数组组合hstack、vstack
(1)乘积
arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
arr2 = 3*arr
print(arr2)
(2)横向变化,拼接(借用上面的arr2)
print('横向变化:\n',np.hstack((arr, arr2)))
(3)纵向变化
print('纵向变化:\n',np.vstack((arr, arr2)))
(十三)concatenate拼接
arr是 arr2是
print(np.concatenate((arr, arr2), axis=1))
print(np.concatenate((arr, arr2), axis=0))
(十四)分割split
arr = np.array([[1,2,4,5],[4,5,6,8],[7,8,10,11],[5,4,3,6]])
(1)
print('数组横向分割:\n',np.hsplit(arr, 2))
与
print(np.split(arr,2,axis=1))#横向分割
(2)
print('数组纵向分割:\n',np.vsplit(arr, 2))
与
print(np.split(arr,2,axis=0))#纵向分割
(十五)读写文件
arr = np.arange(100).reshape(10,10)
np.save("arr",arr)#保存生成一个2进制文件
注意:存储的时候要指定存储的路径,不需要指定后缀
save表示存储单个的数组
load_data = np.load('arr.npy')#读取打印
print(load_data)
arr2 = np.arange(0,1,0.1)
savez表示存储多个数组
np.savez('arrs',arr,arr2)#出多个数组文件
file=np.load('arrs.npz')
print(np.load('arrs.npz'))#里面放了很多npy文件
print(list(file))#两个文件名['arr_0', 'arr_1']
print(file['arr_0'])#字典的取值方法
二进制读取都用load
文本文件===>包含txt/.csv表格类型其实也是文本
类型 分隔符
np.savetxt('arr.txt',arr,fmt= '%d',delimiter=',')
print(np.loadtxt('arr.txt', delimiter=','))#默认浮点型,所以有个点
(十六)统计函数
#1、求和
print(arr2)
print('所有元素总和:',np.sum(arr2))#数组进行求和
print('纵向求和:',arr2.sum(axis=0))#纵向求和,返回结过顺序列表
print('横向求和:',arr2.sum(axis=1))#纵向求和
#2、求平均
print(np.mean(arr2))
print('横向求均值:',arr2.mean(axis=1))
print('纵向求均值:',arr2.mean(axis=0))
#3、方差
print('方差:',np.var(arr2))
print(arr2.var(axis=0))
print(arr2.var(axis=1))
#4、标准差
print(arr2.std(axis=0))
# 5、最大值
print(arr2.max(axis= 0))
# 6、最小值
print(arr2.min(axis= 0))
# 7、最大值索引
print(arr2.argmax(axis=0))
# 8、最小之索引
print(arr2.argmin(axis=0))
#9、累计叠加
print(np.cumsum(arr2))#累计叠加
#10、累计乘积
print(np.cumprod(arr2))#累计乘积
(十七)排序
arr2 = np.random.randint(0,10,size=(3,3))
print(arr2)
# print(arr2.sort())#没有返回值
arr2.sort(axis=0)#作业:在python中sort和sorted的用法
print(arr2)#随机数
arr3 = np.array([2,3,6,8,0,7])
print(arr3.argsort())#[4 0 1 2 5 3]返回的是从小到大排序的索引值
index = arr3.argsort()[:5]
index1 = arr3.argsort()[0]
index2 = arr3.argsort()[-1]
paixuhou=[0,2,3,6,7,8,]
#排序后根据索引取值
print(arr3[index])
(十八) ufunc函数 通用函数
# ufunc函数 通用函数,对数组中所有元素进行操作的函数
x=np.array([1,2,3])
y=np.array([2,2,4])
print(x-y)print(x+y)
print(x*y)
print(x/y)
print(x**y)
print(x>y)
print(x<y)
print(x==y)#还有大于等于 小于等于 不等于!=
逻辑运算 或与非
print(np.all(x == y))#与运算 一假则假
print(np.any(x == y))#或运算 一真则真
(十九)广播机制
arr1 = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
print(arr1)arr2=np.array([1,1,1])#一维的行数一致能广播
print(arr1+arr2)arr3 = np.array([[1],[2],[3],[4]])#二维的列数一致能广播
print(arr3)print(arr1+arr3)