Numpy的简单用法小结


Posted in Python onAugust 28, 2019

Numpy的简单用法,下面就一起来了解一下

import numpy as np

一、创建ndarray对象

列表转换成ndarray:

>>> a = [1,2,3,4,5]
>>> np.array(a)
array([1, 2, 3, 4, 5])

取随机浮点数

>>> np.random.rand(3, 4)
array([[ 0.16215336, 0.49847764, 0.36217369, 0.6678112 ],
    [ 0.66729648, 0.86538771, 0.32621889, 0.07709784],
    [ 0.05460976, 0.3446629 , 0.35589223, 0.3716221 ]])

取随机整数

>>> np.random.randint(1, 5, size=(3,4))
array([[2, 3, 1, 2],
    [3, 4, 4, 4],
    [4, 4, 4, 3]])

取零

>>> np.zeros((3,4))
array([[ 0., 0., 0., 0.],
    [ 0., 0., 0., 0.],
    [ 0., 0., 0., 0.]])

取一

>>> np.ones((3,4))
array([[ 1., 1., 1., 1.],
    [ 1., 1., 1., 1.],
    [ 1., 1., 1., 1.]])

取空(最好别用,了解一下,版本不同返回值不一样)

>>> np.empty((3,4))
array([[ 1., 1., 1., 1.],
    [ 1., 1., 1., 1.],
    [ 1., 1., 1., 1.]])

取整数零或一

>>> np.ones((3,4),int)
array([[1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]])

>>> np.zeros((3,4),int)
array([[0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]])

仿range命令创建ndarray:

>>> np.arange(2,10,2) # 开始,结束,步长
array([2, 4, 6, 8])

二、ndarray属性的查看和操作:

看ndarray属性:

>>> a = [[1,2,3,4,5],[6,7,8,9,0]]
>>> b = np.array(a)
>>> b.ndim #维度个数(看几维)
2
>>> b.shape #维度大小(看具体长宽)
(5,2)
>>>b.dtype
dtype('int32')

ndarray创建时指定属性:

>>> np.array([1,2,3,4,5],dtype=np.float64)
array([ 1., 2., 3., 4., 5.])

>>> np.zeros((2,5),dtype=np.int32)
array([[0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]])

属性强转:

>>> a = np.array([1,2,3,4,5],dtype=np.float64)
>>> a
array([ 1., 2., 3., 4., 5.])

>>> a.astype(np.int32)
 array([1, 2, 3, 4, 5])

三、简单操作:

批量运算:

>>> a = np.array([1,2,3,4,5],dtype=np.int32)
>>> a
array([1, 2, 3, 4, 5])

>>> a + a
array([ 2, 4, 6, 8, 10])

>>> a * a
array([ 1, 4, 9, 16, 25])

>>> a - 2
array([-1, 0, 1, 2, 3])

>>> a / 2
array([ 0.5, 1. , 1.5, 2. , 2.5])

#等等

改变维度:

>>> a = np.array([[1,2,3,4,5],[6,7,8,9,0]],dtype=np.int32)
>>> a
array([[1, 2, 3, 4, 5],
    [6, 7, 8, 9, 0]])

>>> a.reshape((5,2))
array([[1, 2],
    [3, 4],
    [5, 6],
    [7, 8],
    [9, 0]])

矩阵转换(和改变维度有本质区别,仔细):

>>> a = np.array([[1,2,3,4,5],[6,7,8,9,0]],dtype=np.int32)
>>> a
array([[1, 2, 3, 4, 5],
    [6, 7, 8, 9, 0]])

>>> a.transpose()
array([[1, 6],
    [2, 7],
    [3, 8],
    [4, 9],
    [5, 0]])

打乱(只能打乱一维):

>>> a = np.array([[1,2],[3,4],[5,6],[7,8],[9,0]],dtype=np.int32)
>>> a
array([[1, 2],
    [3, 4],
    [5, 6],
    [7, 8],
    [9, 0]])
    
>>> np.random.shuffle(a)
>>> a
array([[9, 0],
    [1, 2],
    [7, 8],
    [5, 6],
    [3, 4]])

四、切片和索引:

一维数组(和普通列表一样):

>>> a = np.array(range(10))
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> a[3]
3

>>> a[2:9:2]
array([2, 4, 6, 8])

多维数组(也差不了多少):

>>> a = np.array([[1,2,3,4,5],[6,7,8,9,0],[11,12,13,14,15]],dtype=np.int32)

>>> a
array([[ 1, 2, 3, 4, 5],
    [ 6, 7, 8, 9, 0],
    [11, 12, 13, 14, 15]])
   

>>> a[:, 1:4]
array([[ 2, 3, 4],
    [ 7, 8, 9],
    [12, 13, 14]])

条件索引:

>>> a = np.array([[1,2,3,4,5],[6,7,8,9,0],[11,12,13,14,15]],dtype=np.int32)

>>> a
array([[ 1, 2, 3, 4, 5],
    [ 6, 7, 8, 9, 0],
    [11, 12, 13, 14, 15]])
   

>>> a > 5
array([[False, False, False, False, False],
    [ True, True, True, True, False],
    [ True, True, True, True, True]], dtype=bool)

>>> a[a>5]
array([ 6, 7, 8, 9, 11, 12, 13, 14, 15])

>>> a%3 == 0
Out[128]: 
array([[False, False, True, False, False],
    [ True, False, False, True, True],
    [False, True, False, False, True]], dtype=bool)

>>> a[a%3 == 0]
array([ 3, 6, 9, 0, 12, 15])

五、函数(numpy核心知识点)

计算函数(都不想举例了,太简单。。):

np.ceil(): 向上最接近的整数,参数是 number 或 array
np.floor(): 向下最接近的整数,参数是 number 或 array
np.rint(): 四舍五入,参数是 number 或 array
np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
np.multiply(): 元素相乘,参数是 number 或 array
np.divide(): 元素相除,参数是 number 或 array
np.abs():元素的绝对值,参数是 number 或 array
np.where(condition, x, y): 三元运算符,x if condition else y
>>> a = np.random.randn(3,4)
>>> a
array([[ 0.37091654, 0.53809133, -0.99434523, -1.21496837],
    [ 0.00701986, 1.65776152, 0.41319601, 0.41356973],
    [-0.32922342, 1.07773886, -0.27273258, 0.29474435]])

>>> np.ceil(a)   
array([[ 1., 1., -0., -1.],
    [ 1., 2., 1., 1.],
    [-0., 2., -0., 1.]])


>>> np.where(a>0, 10, 0)
array([[10, 10, 0, 0],
    [10, 10, 10, 10],
    [ 0, 10, 0, 10]])

统计函数

np.mean():所有元素的平均值
np.sum():所有元素的和,参数是 number 或 array
np.max():所有元素的最大值
np.min():所有元素的最小值,参数是 number 或 array
np.std():所有元素的标准差
np.var():所有元素的方差,参数是 number 或 array
np.argmax():最大值的下标索引值,
np.argmin():最小值的下标索引值,参数是 number 或 array
np.cumsum():返回一个一维数组,每个元素都是之前所有元素的累加和
np.cumprod():返回一个一维数组,每个元素都是之前所有元素的累乘积,参数是 number 或 array
>>> a = np.arange(12).reshape(3,4).transpose()
>>> a
array([[ 0, 4, 8],
    [ 1, 5, 9],
    [ 2, 6, 10],
    [ 3, 7, 11]])

>>> np.mean(a)
5.5

>>> np.sum(a)
66

>>> np.argmax(a)
11

>>> np.std(a)
3.4520525295346629

>>> np.cumsum(a)
array([ 0, 4, 12, 13, 18, 27, 29, 35, 45, 48, 55, 66], dtype=int32)

判断函数:

np.any(): 至少有一个元素满足指定条件,返回True
np.all(): 所有的元素满足指定条件,返回True
>>> a = np.random.randn(2,3)
>>> a
array([[-0.65750548, 2.24801371, -0.26593284],
    [ 0.31447911, -1.0215645 , -0.4984958 ]])

>>> np.any(a>0)
True

>>> np.all(a>0)
False

去除重复:

np.unique(): 去重
>>> a = np.array([[1,2,3],[2,3,4]])
>>> a
array([[1, 2, 3],
    [2, 3, 4]])

>>> np.unique(a)
array([1, 2, 3, 4])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
Python中的函数作用域
May 07 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Python中的类与类型示例详解
Jul 10 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
python输出带颜色字体实例方法
Sep 01 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
使用Python封装excel操作指南
Jan 29 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 #Python
Python 转换文本编码实现解析
Aug 27 #Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 #Python
python定位xpath 节点位置的方法
Aug 27 #Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 #Python
python自动化UI工具发送QQ消息的实例
Aug 27 #Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 #Python
You might like
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
Python实现的生成格雷码功能示例
2018/01/24 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python求质数的3种方法
2018/09/28 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
小学英语教学反思案例
2014/02/04 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
优秀家长事迹材料
2014/05/17 职场文书
2014年林业工作总结
2014/12/05 职场文书
给老师的感谢信
2015/01/20 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
高中开学感言
2015/08/01 职场文书
化工厂员工工作总结
2015/10/15 职场文书