博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy库
阅读量:2240 次
发布时间:2019-05-09

本文共 3839 字,大约阅读时间需要 12 分钟。

numpy库

目录

一、数组

1、数组创建
2、数组属性
3、缺失值问题
4、特殊数组
5、np.random 模块
6、数组的排序
7、数组的重塑
8、索引和切片
9、数组的合并
10、数组的运算

二、np下面的通用函数

三、ndarry实例的常用方法

四、np.char模块下面的字符串函数

五、矩阵运算、协方差

六、np其他常用函数

一、数组

1、数组创建
import numpy as np dir(np)  # 查看np库中的函数
np.array([['张','男','19'],['李','女','20']],dtype='object') # 当输入不同数据类型的元素时,需要指明数据类型,object使用最多,否则全部转化为字符串np.arange(1,5,0.4)  # 随机快速生成数组np.arange(10,0,-1)  # 倒序生成 np.linspace(1,8,5)   # 第一、二位数是起始和结束位置,第三位意思是等分多少份,包含最后一位np.linspace(1,8,5,endpoint=False)   # 不包含最后一位,再等分5份,表示1和8起始点在一个地方#如何查看numpy定义了哪些dtype? np.typeDict # 特殊元素组成的数组,可以是集合和字典等a=np.array([{
1,2},{
3,4},{
5,6}],dtype="object") #注意这里dtype="object"可以省略。 #a是一个一维数组,它的shape是(3,)
2、数组属性
a.ndim    # 返回数组维度b.shape   # 返回一个元组, 表示2行3列a.size    # 返回数组包含多少个元素b.dtype   #返回数据类型a.itemsize   # 表示一个元素占用多少个字节a.size * a.itemsize  # 返回数组占用多少个字节
3、缺失值问题
np.nan  # 引用缺失值函数a.dtype  # 缺失值nan默认为float,所有它会将前面的整数型也转换成浮点型np.array([1,2,None]) # 缺失值None会默认加上 dtype=object,所有库都可以识别out[5]:array([1, 2, None], dtype=object)np.array(['1','2',np.nan])  # 缺失值nan 需要定义类型为object,只有np库或关联的库可识别np.isnan(a)  #识别缺失值,只能识别数值型,返回布尔值,应用范围非常小
4、特殊数组
np.zeros((2,3))   # 生成全部为0的数组,输入的必须为元组的形式np.ones((3,4))    # 生成全部为1的数组np.eye(2)         # 生成单位矩阵np.diag([1,2,3,4])  # 生成对角阵np.empty((2,3))     # 随机生成没有初始化的数组
5、np.random 模块
np.random.seed(100)    # 指定随机种子,保证每次生成的随机数都是一样np.random.rand(3,4)    # 在0到1之间随机生成np.random.uniform(10,50,(4,3))  # 第一、二位是起始范围,第三位元组表示需要生成的行列数np.random.randn(3,4)      #标准正态分布np.random.randint(10,30,(3,4))   # 第一、二位是起始范围,第三位元组表示需要生成的行列数np.random.choice(['张三','李四','王五'],10)  # 从前面列表中随机抽取10个a= np.array([1,2,3])np.random.shuffle(a)        #随机播放,直接影响数组a# 累计求和a.cumsum()

在这里插入图片描述

6、数组的排序
np.argsort(a)    # 返回索引值升序排列np.sort(a)      # 按元素大小升序,不会改变数组aa.sort()        #直接改变数组anp.argsort(b,axis=0)   # axis=0,按列排序,返回索引值,=1时,按行排序sorted(b,key=lambda x:x[1]) #默认进行升序排序,可以通过reverse参数进行设定
7、数组的重塑
np.arange(15).reshape(3,5)   # 随机生成一个数组,然后划分3行5列np.arange(6).reshape(2,-1)   # -1 表示替代列数(函数自行计算列数),此题-1就表示6/2=3列c.ravel()      # 多维数组压缩到一维数组np.tile(a,(3,3))     # 按a,行和列分别扩大3倍
8、索引和切片
a[[0,2]]   # 切取不连续的行,取一个不连续的行或列时候就需要用中括号,也就是列表a[1:3,1]   # 逗号左边表示行,右边表示列数# 布尔索引c[c[:,0]<0.5] # 切取第一列小于0.5的行
9、数组的合并
np.concatenate((a,a),axis=0)  # axis=0,增加行数,纵向合并np.concatenate((a,a),axis=1)    # axis=0,增加行数,横向合并
10、数组的运算
a+b     # a和b都是数组,a和b的对应元素相加a*b     # 对应元素相乘# 广播运算,后缘维度相同的两个数组也可以运算,也就是列数相同,又叫沿着第0维度广播a = np.array([[0,0,0],           [1,1,1],           [2,2,2],           [3,3,3]])b= np.array([1,2,3])a+bout[8]:array([[1, 2, 3],       [2, 3, 4],       [3, 4, 5],       [4, 5, 6]])#某个数组一个维度为1 ,其他维度都相同的两个数组也可以运算,又叫沿着第1维度广播   a = np.array([[0,0,0],              [1,1,1],           [2,2,2],           [3,3,3]])b=np.array([[1],[2],[3],[4]]) a+bout[12]]:array([[1, 1, 1],       [3, 3, 3],       [5, 5, 5],       [7, 7, 7]])

二、np下面的通用函数

# 一元通用函数包括np.abs、np.sqrt、np.square等。np.add(a,b)        # a+b,对应元素相加np.multiply(a,b)  # a*b,对应元素相乘np.maximum(a,b)  # 两个数组对应位置的元素相比,返回较大值

三、ndarry实例的常用方法

a.T             # 矩阵转置a.transpose(1,0) # 矩阵转置,应用范围更广,三维使用a.astype('str')  # 转换数据类型a.tolist()     # 转换成列表

四、np.char模块下面的字符串函数

np.char.add(a,b)  # 连接对应位置的字符串np.char.upper(a)  # 转换成大写d=np.char.split(a,sep=" ")   # 将字符串转换成列表,sep参数是设置分隔符

五、矩阵运算、协方差

# 点积 a.dot(b)  # 方法1a @ b    # 方法2np.matmul(a,b) # 方法3# 内积运算 一个矩阵乘以另外一个矩阵的转置就是内积np.inner(a,a)  # 方法1np.dot(a,a.T)  # 方法2# 求行列式和逆矩阵,矩阵必须是方阵np.linalg.det(a)  # 行列式np.linalg.inv(a)  # 逆矩阵# 二维数组的协方差矩阵data1=np.random.rand(3,10)   #随机生成一个二维数组np.cov(data1)      #可以将每一行看做一个X,3个X的协方差,输出3*3的列表

六、np其他常用函数

sum([1,2,3],5) # 5是起始值,即5+1+2+3=11a = np.array([[1,2,3],              [3,4,5]])np.sum(a,1)   # 1 表示轴的意思,也就是行相加,列不变,返回([6,12])sum(a,2)   # 每列分别相加再加2,返回([6,8,10])np.max(a)  # 返回数组中最大的值5a.argmin(a)  #返回数组中最小的值1np.max(a,0)   # 0 表示0轴的意思,返回每一列的最大值([3,4,5])a.argmax(axis=0)       # 返回每一列的最大值的索引([1,1,1],dytype=int64)np.sum(a,axis=0,keepdims=True)  # 每列和二维数组out[12]:array([[4, 6, 8]])

转载地址:http://yxqbb.baihongyu.com/

你可能感兴趣的文章
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>