Numpy入门级代码实战

mac2024-05-22  37

整理于2020年11月下旬,献给不甘平凡的你

更多机器学习知识请查收于: https://blog.csdn.net/weixin_45316122/article/details/109854595

Trick:纯demo,心在哪里,结果就在那里

 

# -*- coding: utf-8 -*- # Author : szy # Create Date : 2019/10/18 from array import array import numpy as np #numpy 的底层是用C实现的 计算效率非常高 a = [1,2,3,4] # print(type(a)) #在python中 列表实际上是对象的数组 b = [4,'four'] # print(type(b)) #在python中一切都是对象 # #1. 数组的创建 ndarray x1 = np.array([[[1,2,3]]]) # print(type(x1)) x2 = np.array([[1,2,3],[2,3,4]]) # print(x1.shape,x2.shape) # print(x1.ndim,x2.ndim) # print(x1.dtype) # x3 = np.array([1.2,2.3]) # print(x3.dtype) # x4 = np.array([2,1,3],dtype='float32') # x1.dtype = 'float32' # print(x4.dtype) # print(x1.dtype) # print(x1) # #1.1 使用列表创建 上面的全都是这个内容 # # #1.2 numpy还帮助我们封装了方便的创建一些demo数组的方法 # print(np.zeros((2,3))) # print(np.ones((2,3,4))) # print(np.full((3,5),2*3.14)) # # 机器学习 调参 grid_search # # python3 原生是有一个 range() # # python2 range() xrange() # print(np.arange(0,20,2)) # #从0到1 ,给我分出20个元素0.1 20 # print(np.linspace(0,1,20)) # # # print(np.random.random((3,3))) # # 生成正态分布(高斯分布) 方便的小工具 # print('normal',np.random.normal(loc=3,scale=4,size=(3,2,3),)) # # # 生成随机整数 # # # print('randint',np.random.randint(low = 0,high = 10,size = (3,2))) # # # 生成单位矩阵 对角线为1 其他全部为0 # print(np.eye(10)) # # # 生成未初始化矩阵,创建一个占地方用的矩阵,必须需要重新逐个元素赋值才能放心使用 # print(np.empty((2,30000000))) 第二部分 # -*- coding: utf-8 -*- # Author : szy # Create Date : 2019/10/19 import numpy as np #1. 数组的属性 np.random.seed(1) x1 = np.random.randint(10,size=6) #reshape的用法 x2 = np.arange(1,13).reshape((3,4)) x3 = np.random.randint(10,size = (3,4,5)) # print(x1.ndim,x2.ndim,x3.ndim) # # 形状 例子(2,3) # print(x1.shape,x2.shape,x3.shape) # #这个数组总计有多少个元素 例子6 # print(x1.size,x2.size,x3.size) # print(x1.dtype) # #每一个元素占几字节 8位1字节 8bits=1byte # print(x2.itemsize) # print(x3.nbytes) # 2.数组的索引: # print(x2) # print(x2[0]) # print(x2[0][1]) # 坐标式写法 等价于上面的两个中括号的写法 print(x2[0,1]) # 假如想取第一列 第一个:表示所有的行,后面的0表示所有行的第一列 。。。必须使用坐标式表达方式 # print(x2[:,0]) # #注意,当使用:时,两种表示方法不同 这边表示所有行的第一行 # print(x2[:][0]) #[start:end:step]python列表的切片“,”后面的0表示第一个 # print(x2[::2,0]) # #最笨的方法,就是单独取出两个数,在组成一个数组 # print(np.array((x2[1,1],x2[2,2]))) # # #坐标式取法,指定取某些元素 # print(x2[(1,2),(1,2)]) # # #使用负数取索引 # print(x2[-1]) # #step同样可以使用负数 # print(x2[::-1]) # print(x2[::-1,::-1]) # # # # 所有切片出来的数组,即使你把它赋值给了新的变量,他也仍然全都是原数组的视图 # # x2_sub = x2[:2,:2] # print(x2_sub) # x2_sub[0,0]=1000 # print(x2_sub) # print(x2) # # # 3.数组的变形 通过reshape函数可以将任意两个总元素个数的数组相对转换,会返回一个新的数组对象2 # print(x3) x4= x3.reshape(60) # print(x3,x4) # # # 4.数组的拼接和分裂 # x = np.arange(1,4) # y = np.arange(4,7) # z = [7,8,9] # print(x,y) # # 在ndarray对象之间无法直接通过+来拼接 # #打破了一层壁垒,将原本两个独立的数组,拼接成了一个大数组 # x_y_z = np.concatenate([x,y,z]) # print(x_y_z) # # #如果这样写,返回的会是一个列表 # x_y = np.array([x,y]) # print(x_y) # #稍微有点绕 axis=0 在最外层融合 axis=1 在内部一层对位融合,在 # print(np.concatenate([x_y,x_y],axis=0)) # print(np.concatenate([x_y,x_y],axis=1)) # # # # hstack vstack 相比之下更清晰 hsatack 竖落, vsrack横向 # print(np.vstack((x_y,x_y))) # print(np.hstack((x_y,x_y))) # # # # 数组的分裂 np.split 传入的参数是设置分割位置 # x = [1,2,3,99,99,3,2,1] # x1, x2, x3 = np.split(x,[3,5]) # print(x1,x2,x3) # # vsplit # grid = np.arange(16).reshape(4,4) # uper, lower = np.vsplit(grid,[3]) # print(grid) # print(uper,lower) # # # hsplit # lefter,righter = np.hsplit(grid,[1]) # print(lefter,righter) 第三部分 # -*- coding: utf-8 -*- # Author : szy # Create Date : 2019/10/21 import numpy as np np.random.seed(0) a = np.array([1,2,3,4,5,6]).reshape(2,3) result = [] # for i in a: # reciprocal = 1/i # result.append(reciprocal) # # print(result) #列表生成式 result = [1/i for i in a ] print(result) #更简单的方法: ndarray的通用函数 print(1/a) # 如果参与运算的两个对象 都是数组,且形状相同,那么会对位彼此之间进行运算 print(a/a) print(2**a) # 可以支持的运算 abs() +-*/ 取负号 # 三角函数 np.sin cos tang arcsin arccos arctan print(np.sin(a)) #指数和对数运算 exp exp2(x) 代表2^x np.power(3,x) np.ln log2 log10 #通用函数指定输出结果的用法 x = np.arange(5) y= np.empty(5) np.multiply(x,10,out=y) print(y) y = np.zeros(10) np.power(2,x,out=y[::2]) print(y) # 聚合函数 把一个序列 -》 一个数 # sum prod mean std var min max argmin argmax median中位数 precntile百分位数 print(x)

 

最新回复(0)