python-numpy基础用法

python-numpy基础用法

import numpy as np

tang_list = [1,2,3,4,'5']
tang_arry = np.array(tang_list)
//数组的维度
tang_arry.shape
//数组中每一个元素分别所占空间的大小
tang_arry.itemsize
//填充
tang_arry.fill(0)
//nd array所有元素都得是同一类型 不是就向下转换
//索引与切片
tang_array[1:3]
tang_array[-2:]
//多维矩阵
tang_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
tang_array.shape
//(3,3)
//几维
tang_array.ndim
//2
//取值索引 先行后列
tang_array[1,1]
//5
//取行
tang_array[1]
//[4,10,6]
//取列
tang_array[:,1]
//该值
tang_array[1,1] = 100
tang_array2 = tang_array
//操作2 初始数据也会受改变 因为赋值指向同一个内存地址
//想要复制一个新的数组 用copy
tang_array2 = tang_array.copy()
//构造等差数组
tang_array = np.arrange(0,100,10)
[0,10,20,30,40,50,60,70,80,90]
mask = np.array([0,0,0,1,1,1,0,0,1,1],dtype=bool)
tang_array[mask]
[30,40,50,80,90]
//随机数
random_array = np.random.rand(10)
//返回符合条件的索引值
np.where(tang_array > 30)
[3,4]
tang_array[np.where(tang_array > 30)]
//指定object类型
tang_array = np.array([1,10,3.5,'str'],dtype = np.object)
[1,10,3.5,'str']
//转换数据类型
tang_array = np.asarray(tang_array,dtype = np.float32)
tang_array = tang_array.astype(np.float32)
//求总和
np.sum(tang_array)

tang_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
//纵相加
np.sum(tang_array,axis = 0)
[5,7,9]
np.sun(tang_array,axis = 1)
[6,15]
//乘积 也可以指定轴 axis = 1 or 0
tang_array.prod()
//最小值 最大值
tang_array.min()
tang_array.max()
//最小值位置 最大值位置
tang_array.argmin()
tang_array.argmax()
//平均值
tang_array.mean()
//3.5
//标准差
tang_array.std()
//方差
tang_array.var()
//限制 小于2变2 大于4变4
tang_array.clip(2,4)
//四舍五入
tang_array.round()
//排序 可以加轴来更换排序规则
np.sort(tang_array)
//返回排序后会变的索引值
np.argsort(tang_array)
//0,10之间构建十个数
np.linspace(0,10,10)
//插入数组
values = np.array([2.5,6.5,9.5])
np.searchsorted(tang_array,values)
//第三列升序,第一列降序
index = np.lexsort([-1*tang_array[:,0],tang_array[:,2]])
//重新定义维度
tang_array.shape = 2,5
tang_array.reshape(1,10)
//压缩数组
tang_array = tang_array.squeeze()
//转置
tang_array.T
//两个数组并一起
a = np.array([[123,456,678],[214,456.124]])
b = np.array([[13,581,872],[20,45.142]])
c = np.concatenate((a,b))
//拼接完变成4*3的数组 默认按行拼组 列拼则2*6
//简易写法
np.vstack((a,b))
np.hstack((a,b)) // np.concatenate((a,b),axis = 1)
//拉平 变成一维数组了
a.flatten()
a.ravel()
//零数组
np.zeros((3,3))
np.zeros_like(tang_array)
//都变1
np.ones_like(tang_array)
//乘法 对应位置相乘
np.multiply(x,y)
//维度不同不能相乘
np.dot(x,y)
//随机整数
np.random.randint(10,size = (5,4))
//0-10取三个数
np.random.randint(0,10,3)
//洗牌 打乱顺序
np.random.shuffle(tang_array)
//随机种子 可以保证下次随机数不变
np.random.seed(0)
np.random.normal(0,0.1,10)

文件操作

//读取文件操作
data=[]
with open('tang.txt') as f:
	for line in f:
		fileds = line.split()
		cur_data = [float(x) for x in fileds]
		data.append(cur_data)
data = np.array(data)
//假如数据较为规整 参数指定分隔符 跳过第几行
data = np.loadtxt('tang.txt',delimiter = ',',skiprows = 1)
//保存数据 以整数形式 间隔
np.savetxt('tang4.txt',tang_array,fmt='%d',delimiter=',')
//读取
np.save('tang_array.npy',tang_array)
tang = np.load('tang_array.npy')
tang_array2 = np.arange(10)
np.save('tang.npz',a=tang_array,b=tang_array2)
//会存入两个数组 解压后是两个npy
data = np.load('tang.npz')
data.keys()
// ['b','a']
data['a']
[1,2,3],[4,5,6]

练习题

import numpy as np
# 打印numpy版本
print(np.__version__)
zero = np.zeros((2,5),dtype=int)
# 占用的内存
print(zero.size*zero.itemsize)
# 输出np.add的帮助文档
print(help(np.info(np.add)))
# 创建一个10—49的数组倒序排序
tang_array = np.arange(10,50,1)
tang_array = tang_array[::-1]
print(tang_array)
# 找到一个数组中不为零的索引
print(np.nonzero([0,0,5,0,1,3,4]))
# 随机构造一个3*3的矩阵,打印最小值与最大值
tang_array = np.random.random((3,3))
print(np.min(tang_array))
print(np.max(tang_array))
# 构造5*5 矩阵 值都为1 并在最外层一圈加零
tang_array = np.ones((5,5))
tang_array = np.pad(tang_array,pad_width=1,constant_values=0,mode='constant')
print(tang_array)
# 构建一个shape为(6,7,8)的矩阵,并找到第一百个元素的索引值
print(np.unravel_index(100, (6, 7, 8)))
# 对一个5*%的矩阵做归一化操作
tang_array = np.random.random((5,5))
tang_max = tang_array.max()
tang_min = tang_array.min()
# 所有数减去最小值 然后除以最大减最小的差值
tang_array = (tang_array-tang_min)/(tang_max-tang_min)
print(tang_array)
# 找到两个数组中相同的值
z1 = np.random.randint(0,10,10)
z2 = np.random.randint(0,10,10)
print(np.intersect1d(z1,z2))
# 得到今天 明天 昨天的日期
today = np.datetime64('today','D')
temorrow = np.datetime64('today','D')+np.timedelta64(1,'D')
yesterday = np.datetime64('today','D')-np.timedelta64(1,'D')
print(today,temorrow,yesterday)
# 得到一个月中的所有天
np.arange('2023-6','2023-7',dtype='dataetime64[D]')
# 得到一个数的整数部分
z = np.random.uniform(0,10,10)
print(np.floor(z))
# 构建一个数组 让他不能被改变
z = np.zeros(5)
z.flags.writeable = False
# z[0] = 1
# 打印大数据的部分值,全部值
np.set_printoptions(threshold=5) #打印五个 多余省略号
np.set_printoptions(threshold=np.nan) #无限制
z = np.zeros((15,15))
print(z)
# 找到在一个数组中,最接近一个数的索引
z = np.arange(100)
v = np.random.uniform(0,100)
print(v)
# 广播机制
index = (np.abs(z-v).argmin())
print(z[index])
# 32位float类型和32位int类型转换
z = np.arange(10,dtype=np.int32)
print(z.dtype)
z = z.astype(np.float32)
print(z.dtype)
# 打印数组元素位置坐标与数值
z = np.arange(9).reshape(3,3)
# 枚举
for index,value in np.ndenumerate(z):
    print(index,value)
# 统计数组中每个数值出现的次数
z = np.array([1,1,1,2,2,3,3,4,5,8])
np.bincount(z)
# 四维数组的最后两维来求和
z = np.random.randint(0,10,(4,4,4,4))
res = z.sum(axis=(-2,-1))
print(res)
# 交换矩阵中的两行
z = np.arange(25).reshape(5,5)
print(z)
z[[0,1]] = z[[1,0]]
print(z)
# 找出数组中最常出现的数字
z = np.random.randint(0,10,50)
print(np.bincount(z).argmax())
# 快速查找top k
z = np.arange(10000)
np.random.shuffle(z)
n = 5
# 排序方法 (n 找几个数字) 取前n个
print(z[np.argpartition(-z,n)[:n]])
# 去掉一个数组中,所有元素都相同的数据
z = np.random.randint(0,5,(10,3))
a = np.array([1,2,3,4])
b = np.array([1,2,3,4])
np.all(a == b) #判断是否全部相同
np.any(a == b) #有一个相同就返回true
e = np.all(z[:,1:]==z[:,:-1],axis=1)
print(e)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值