numpy 库简单使用
numpy 库简单使用
一、numpy库简介
Python标准库中提供了一个array类型,用于保存数组类型的数据,然而这个类型不支持多维数据,不适合数值运算。作为Python的第三方库numpy便有了用武之地。
numpy库处理的最基础数据类型是用同种元素构成的多维数组(ndarray),简称数组。数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray类型的维度叫作轴(axes),轴的个数叫做秩(rank)。
二、numpy库下载
- pip install numpy
三、导入库函数
- import numpy as np
四、库函数基本使用
1. 创建数组的函数 (ndarray类型)
函数 |
说明 |
np.array([ x, y, z], dtype = int) |
从列表或数组中创建数组 |
np.arange(x, y, i) |
创建一个由x到y,以i为步长的数组 |
np.linspace(x, y, n) |
创建一个由x到y,等分成n个元素的数组 |
创建一个m行n列的矩阵(3维数组) |
|
np.random.rand(m, n) |
创建一个m行n列的随机数组 |
np.ones((m,n), dtype) |
创建一个m行n列的全1数组,dtype为数据类型 |
np.zeros((m,n), dtype) |
创建一个m行n列的全0数组,dtype为数据类型 |
创建一个m行n列的空数组,dtype为数据类型 |
- import numpy as np
- ''' numpy --> array() '''
- a1 = np.array([1,2,3,5,8,13,21,34,55,89], dtype = int) # 由列表创建数组
- array_ = (2.3,8,10/3,5.0,1/7) # 创建元组
- a2 = np.array(array_) # 由元组创建数组
- print('numpy --> array():\n',a1,'\n',a2)
- ''' numpy --> arange() '''
- arange_1 = np.arange(1,30,4)
- arange_2 = np.arange(1,3,0.4)
- print('numpy --> arange():\n',arange_1,'\n',arange_2)
- ''' numpy --> linspace() '''
- lins_1 = np.linspace(1,10,10)
- lins_2 = np.linspace(1,10,9, dtype = int)
- print('numpy --> linspace():\n',lins_1,'\n',lins_2)
- ''' numpy --> random.rand() '''
- rand_ = np.random.rand(3,4)
- print('numpy --> random.rand():\n',rand_)
- ''' numpy --> ones() '''
- ones_1 = np.ones((3,4)) # 默认为float
- ones_2 = np.ones((3,4),dtype = int)
- print('numpy --> ones():\n',ones_1,'\n',ones_2)
- ''' numpy --> zeros() '''
- zeros_1 = np.zeros((2,3))
- zeros_2 = np.zeros((2,3), dtype = int)
- print('numpy --> zeros():\n',zeros_1,'\n',zeros_2)
2. ndarray类型的常用属性
属性 |
说明 |
ndarray.ndim |
返回数组轴的个数,即数组的秩 |
ndarray.shape |
返回数组在每个维度上大小的整数元组 |
ndarray.size |
返回数组元素的总个数 |
ndarray.dtype |
返回数组元素的数据类型 |
ndarray.itemsize |
返回数组元素的字节大小 |
ndarray.data |
返回数组元素的缓存区地址 |
ndarray.flat |
数组元素的迭代器 |
- import numpy as np
- a = np.indices((5,8)) # 创建一个m行n列的矩阵
- print("数组a的秩:",a.ndim)
- print("数组a各维度的大小:",a.shape)
- print("数组a元素的总个数:",a.size)
- print("数组a元素的数据类型:",a.dtype)
- print("数组a元素的字节大小:",a.itemsize)
- print("数组a元素的缓存区地址:",a.data)
- print("数组a元素的迭代器:",a.flat)
- print("数组a的元素:\n",a)
3. ndarray类型的形态操作方法
操作方法 |
说明 |
ndarray.reshape(n, m) |
返回一个维度为(n, m)的数组副本 |
ndarray.resize(new_shape) |
修改数组的维度大小 |
ndarray.swapaxes(ax1, ax2) |
调换数组ax1维度与ax2维度,返回调换后的数组 |
ndarray.flatten() |
对数组进行降维,返回一维数组 |
ndarray.ravel() |
对数组进行降维,返回数组的一个视图 |
- import numpy as np
- a = np.arange(20)
- print('(1) 创建一维数组a:\n',a)
- b = a.reshape(2,10)
- print('(2) 由a创建(2,10)的数组b:\n',b)
- a.resize(4,5)
- print('(3) 修改数组a为(4,5):','Shape of a:',a.shape,'\n',a)
- c = a.swapaxes(0,1)
- print('(4) 调换数组a第1维度与第2维度得到数组c:(5,4)','Shape of c:',c.shape,'\n',c)
- d = a.flatten()
- print('(5) 对数组a降维,得到一维数组d:','Shape of d:',d.shape,'\n',d)
- e = a.ravel()
- print('(6) 对数组a降维,得到数组a的视图e','Shape of e:',e.shape,'\n',e)
4. ndarray类型的索引与切片方法
方法 |
说明 |
x [i] |
索引数组x的第i个元素 |
x [-i] |
从后往前索引数组x的第i个元素 |
x [n : m] |
从前往后索引数组x,不包含第m个元素 |
x [-m : -n] |
从后往前索引数组x,结束位置为n |
x [n : m: i] |
以i为步长索引数组x |
- import numpy as np
- a = np.arange(8)
- print('a:',a)
- print('a[4]:',a[4])
- print('a[-6:-3]:',a[-6:-3])
- print('a[1:6:2]:',a[1:6:2])
5. ndarray类型的算术运算函数
函数 |
说明 |
np.add(x1, x2 [,y]) |
y = x1 + x2 |
np.subtract(x1, x2 [,y]) |
y = x1 - x2 |
np.multiply(x1, x2 [,y]) |
y = x1 * x2 |
np.divide(x1, x2 [,y]) |
y = x1 / x2 |
np.floor_divide(x1, x2 [,y]) |
y = x1 // x2 |
np.negative(x [,y]) |
y = -x |
np.power(x1, x2 [,y]) |
y = x1 ** x2 |
np.remainder(x1, x2 [,y]) |
y = x1 % x2 |
- import numpy as np
- A1 = np.arange(1,9)
- A2 = np.arange(1,30,4)
- print('A1:',A1)
- print('A2:',A2)
- print('A2-A1:',np.subtract(A2,A1))
- print('A2//A1:',np.floor_divide(A2,A1))
- print('A2%A1:',np.remainder(A2,A1))
6. ndarray类型的比较运算函数
函数 |
说明 |
np.equal(x1, x2 [,y]) |
y = x1 == x2 |
np.not_equal(x1, x2 [,y]) |
y = x1 != x2 |
np.less(x1, x2 [,y]) |
y = x1 < x2 |
np.less_equal(x1, x2 [,y]) |
y = x1 <= x2 |
np.greater(x1, x2 [,y]) |
y = x1 > x2 |
np.greater_equal(x1, x2 [,y]) |
y = x1 >= x2 |
根据条件判断输出x或y |
- import numpy as np
- A1 = np.arange(1,9)
- A2 = np.arange(1,30,4)
- print('A1:',A1)
- print('A2:',A2)
- print('A1 != A2:',np.not_equal(A1,A2))
- print('A1 <= A2:',np.less_equal(A1,A2))
- print('Use of where_1:',np.where(A1>=5,'Y','N'))
- print('Usage as much of where:{}'.format('Y' if A1[3]>=5 else 'N'))
7. ndarray类型的其他运算函数
函数 |
说明 |
np.abs(x) |
返回数组x每个元素的绝对值 |
np.sqrt(x) |
返回数组x每个元素的平方根 |
np.square(x) |
返回数组x每个元素的平方 |
np.sign(x) |
返回数组x每个元素的符号:1(+)、0、-1(-) |
np.ceil(x) |
返回大于或等于数组x每个元素的最小值 |
np.floor(x) |
返回小于或等于数组x每个元素的最大值 |
np.rint(x [,out]) |
返回数组x每个元素最接近的整数 |
np.exp(x [,out]) |
返回数组x每个元素的指数值 |
np.log(x) / np.log2(x) / np.log10(x) |
返回数组x每个元素相应的对数(e、2、10) |
- import numpy as np
- A1 = np.arange(1,9)
- A2 = np.arange(1,30,4)
- print('A1:',A1)
- print('A2:',A2)
- print('A2的平方根:',np.sqrt(A2))
- print('A1的平方:',np.sqrt(A1))
- print('A2 2的对数:',np.log2(A2))
注:numpy库还包括三角运算函数、傅立叶变换、随机和概率分布、基本数值统计、位运算、矩阵运算等功能,具体可到官网查询。
numpy 库简单使用的更多相关文章
- numpy库简单使用
numpy简介 NumPy(Numerical Python)是python语言的一个扩展程序库,支持大量维度数组与矩阵运算,此外,也针对数据运算提供大量的数学函数库. NumPy是高性能科学计算和数 ...
- numpy 库使用
numpy 库简单使用 一.numpy库简介 Python标准库中提供了一个array类型,用于保存数组类型的数据,然而这个类型不支持多维数据,不适合数值运算.作为Python的第三方库numpy便有 ...
- 简单记录numpy库的某些基本功能
这里介绍python的一个库,numpy库,这个库是机器学习,数据分析最经常用到的库之一,也是利用python做数据必须用到的一个库,入门机器学习学的第一个python库就是它了. 先对其导入到pyt ...
- numpy库:常用基本
numpy 本文主要列出numpy模块常用方法 大部分内容来源于网络,而后经过自己的一点思考和总结,如果有侵权,请联系我 我是一名初学者,有哪些地方有错误请留言,我会及时更改的 创建矩阵(采用ndar ...
- 初识NumPy库-基本操作
ndarray(N-dimensional array)对象是整个numpy库的基础. 它有以下特点: 同质:数组元素的类型和大小相同 定量:数组元素数量是确定的 一.创建简单的数组: np.arra ...
- Numpy库(个人学习笔记)
一样,咱的计算机还是得先拥有Python,并且安装了Numpy库.有疑问的话可以看这里呦~~~~ 下面开讲: NumPy的主要对象是齐次多维数组.它是一个元素表(通常是数字),并且都是相同类型,由正整 ...
- Numpy库的下载及安装(吐血总结)
Python很火,我也下了个来耍耍一阵子.可是渐渐地,我已经不满足于它的基本库了,我把目光转到了Numpy~~~~~ 然而想法总是比现实容易,因为我之前下的是Python3.3.x,所有没有自带pip ...
- Numpy库的学习(五)
今天继续学习一下Numpy库,废话不多说,整起走 先说下Numpy中,经常会犯错的地方,就是数据的复制 这个问题不仅仅是在numpy中有,其他地方也同样会出现 import numpy as np a ...
- Numpy库的学习(一)
今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直 ...
随机推荐
- linux 安装 mysql
二进制安装mysql 1,下载安装包,使用国内站点速度会比较快,如清华站点https://mirrors.tuna.tsinghua.edu.cn 登陆linux系统后,使用wget 进行下载mysq ...
- ucos中消息队列的应用(二)
继续说任务间的通信. 本次的任务是在ISR中发送一个消息给任务,ucos的代码中的是非常之简洁和容易理解啊.创建,释放,等待,非常好理解,不再赘述. 说说我遇到的问题,数据帧接收完之后,向消息队列发送 ...
- 一段自适应的CSS代码
一段自适应HTML5的CSS代码,该代码在陕西特产使用过,手机端效果还好,就是PC端看起来没那么大气,比较窄屏 * { transition-property: all; -ms-transition ...
- 批量替换表中某字段的“\t”
update dbo.Hishop_Products set [Description]=replace(cast([Description] as varchar(8000)),' ',' ')
- lambda练习题
3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao','nezha'] # def func(item): # ...
- 《Java从入门到精通》学习总结1
1. Java既是编译型语音,也是解释型语言:先将源代码编译成Java字节码,然后Java虚拟机对Java字节码进行解释运行 2. 使用命令行编译Java源代码时,如果代码中有中文,在编译时需要指定编 ...
- vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件
此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...
- todolist---插入和删除----vue
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 1004: [HNOI2008]Cards - burnside + DP
Description 小春现在很清闲, 面对书桌上的 \(N\) 张牌, 他决定给每张染色, 目前小春只有 \(3\) 种颜色: 红色, 蓝色, 绿色. 他询问 Sun 有 多少种染色方案, Sun ...
- python基础之Day20part1
一.hash算法 什么是hash? 类似工厂加工的过程,传bytes串,经过运算返回字符 hash相当于工厂,传给hash算法的内容是原材料,hash值为产品 为何用hash? hash三大特性: 1 ...