一、Numpy 属性

# 列表转化为矩阵
In []: arr = np.array([[,,],[,,]])
In []: arr
Out[]:
array([[, , ],
[, , ]])

1,维度 ndim

In []: arr.ndim
Out[]:

2,行数和列数 shape

In []: arr.shape
Out[]: (, )

3,元素个数 size

In []: arr.shape
Out[]: (, )

二,创建array

1,创建数组

In []: arr = np.array([[,,],[,,]])
In []: arr
Out[]:
array([[, , ],
[, , ]])

2,创建数组并指定类型

In [12]: arr = np.array([[1,2,3],[4,5,6]],dtype=int)
In [13]: arr
Out[13]:
array([[1, 2, 3],
[4, 5, 6]])
In [14]: arr = np.array([[1,2,3],[4,5,6]],dtype=float)
In [15]: arr
Out[15]:
array([[ 1., 2., 3.],
[ 4., 5., 6.]])

3,创建数据全为0的数组  np.zero((行,列))

In [16]: arr = np.zeros((3,4))
In [17]: arr
Out[17]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])

4,创建数据全为1的数组 np.ones((行,列))

In [18]: arr = np.ones((3,4))
In [19]: arr
Out[19]:
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])

5,创建数组接近0的数组 np.empty((行,列))

6,按照指定范围创建数组 np.arange(开始,结束,步长)

In [24]: arr = np.arange(10,50,2)
In [25]: arr
Out[25]:
array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
44, 46, 48])
In [28]: arr = np.arange(10,50,2).reshape(4,5) # 通reshape改变数据形状
In [29]: arr
Out[29]:
array([[10, 12, 14, 16, 18],
[20, 22, 24, 26, 28],
[30, 32, 34, 36, 38],
[40, 42, 44, 46, 48]])

7,创建线段

In [31]: np.linspace(1,20,5)
Out[31]: array([ 1. , 5.75, 10.5 , 15.25, 20. ])

三,运算

In [38]: a = np.array([10,20,30,40])  # 创建a
In [39]: b = np.arange(4) # 创建b
In [40]: b-a # 相减
Out[40]: array([-10, -19, -28, -37])
In [41]: b+a # 相加
Out[41]: array([10, 21, 32, 43])
In [42]: b*a # 乘法
Out[42]: array([ 0, 20, 60, 120])
In [43]: a**2 # 平方
Out[43]: array([ 100, 400, 900, 1600])
In [46]: a<11 # 判断,返回值为布尔
Out[46]: array([ True, False, False, False], dtype=bool)
In [49]: a # 创建a
Out[49]:
array([[1, 2],
[2, 3]])
In [50]: b = np.arange(4).reshape(2,2) # 创建b
In [51]: b
Out[51]:
array([[0, 1],
[2, 3]])
In [52]: a*b # 对应元素相乘
Out[52]:
array([[0, 2],
[4, 9]])
In [53]: np.dot(a,b) # 标准的矩阵乘法计算
Out[53]:
array([[ 4, 7],
[ 6, 11]])
In [64]: a=np.random.random((2,4)) # 产生一个2行4列的矩阵,数值在0到1之间
In [65]: np.sum(a) # 矩阵的和
Out[65]: 4.4227580588680375
In [66]: np.min(a) # 矩阵的最小值
Out[66]: 0.16635521270028986
In [67]: np.max(a) # 矩阵的最大值
Out[67]: 0.78738798170221957
In [76]: a = np.arange(1,10) # 产生一个数组a
In [77]: np.argmax(a) # 数组a的最大值
Out[77]: 8
In [78]: np.argmin(a) # 数组a的最小值
Out[78]: 0
In [79]: np.mean(a) # 数组a的平均值
Out[79]: 5.0
In [80]: np.median(a) # 数组a的中位数
Out[80]: 5.0
In [81]: np.diff(a) # 数组中后一个元素和前一个元素的差值,新组成的一个数组
Out[81]: array([1, 1, 1, 1, 1, 1, 1, 1])
In [82]: np.cumsum(a) # 数组中,第i项和第i-1项的和赋值给i项
Out[82]: array([ 1, 3, 6, 10, 15, 21, 28, 36, 45])
In [83]: np.average(a)# 数组a的平均数
Out[83]: 5.0
In [92]: a = np.arange(10,0,-1).reshape(2,5) # 创建一个2行5列的数组a,值从10到0,每次递减一个
In [93]: a
Out[93]:
array([[10, 9, 8, 7, 6],
[ 5, 4, 3, 2, 1]])
In [94]: np.sort(a) # 对数组的每一行进行排序
Out[94]:
array([[ 6, 7, 8, 9, 10],
[ 1, 2, 3, 4, 5]])
In [95]: np.transpose(a) # 转置数组a
Out[95]:
array([[10, 5],
[ 9, 4],
[ 8, 3],
[ 7, 2],
[ 6, 1]])
In [96]: a.T # 转置数组a
Out[96]:
array([[10, 5],
[ 9, 4],
[ 8, 3],
[ 7, 2],
[ 6, 1]])
In [97]: np.clip(a,5,8) # 将数组中元素值比5小的值赋为5,元素值比8大的值赋为8
Out[97]:
array([[8, 8, 8, 7, 6],
[5, 5, 5, 5, 5]])

四,通过索引取元素

In [98]: a # 数组a
Out[98]:
array([[10, 9, 8, 7, 6],
[ 5, 4, 3, 2, 1]])
In [99]: a[0] # 取数组a的第1行
Out[99]: array([10, 9, 8, 7, 6])
In [100]: a[0][0] # 取数组a的第一行的第一个元素
Out[100]: 10
In [101]: a[0,0] # 取数组a的第一行的第一个元素的另一种写法
Out[101]: 10
In [102]: a[0,1:3]# 取数组a的第一行的,第2列到第3列
Out[102]: array([9, 8])
In [103]: a.flatten() # 将多维的矩阵转换为一行的矩阵
Out[103]: array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])

五、合并

In [110]: a # 数组a
Out[110]: array([1, 1, 1])
In [111]: b # 数组b
Out[111]: array([2, 2, 2])
In [112]: np.vstack((a,b)) # 上下合并
Out[112]:
array([[1, 1, 1],
[2, 2, 2]])
In [113]: np.hstack((a,b))# 左右合并
Out[113]: array([1, 1, 1, 2, 2, 2])

六、分割

1,等量分割 np.split()

1.1,按行分割

In [138]: a # 3行4列的数组a
Out[138]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [139]: np.split(a,1,axis=0) # 将数组a按行进行分割,一行一组。如果此时将参数改为(a,2,axis=0)是不行的,因为是等量分割,前两行为一项,后一行为一项是不等量的
Out[139]:
[array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])]
In [140]: np.split(a,3,axis=0)# 将数组a按行进行分割,三行一组
Out[140]: [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]

1.2,按列分割

In [133]: a # 3行4列的数组a
Out[133]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [134]: np.split(a,2,axis=1) # 将数组a,按照列分割,2列一组。如果现在参数是(a,3,axis=1)这样是不行的,因为进行的是等量分割,前三列为一项,只剩下一项不是等量的。
Out[134]:
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]

2,不等量分割 np.array_split()

In [144]: a # 3行4列的数组a
Out[144]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [145]: np.array_split(a,3,axis=1) # 按照列进行不等量的分割
Out[145]:
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
In [146]: np.array_split(a,2,axis=0)# 按照行进行不等量的分割
Out[146]:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]

3,其他分割

In [147]: np.vsplit(a,1) # 等同于np.split(a,1,axis=0)
Out[147]:
[array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])]
In [148]: np.hsplit(a,2) # 等同于np.aplit(a,2,axis=1)
Out[148]:
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]

七、赋值和拷贝

In [149]: a # 创建3行4列数组a
Out[149]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [150]: b = a # 创建数组b,将a的值赋给b In [151]: a[0][0]=111 # 改变a[0][0]的值为111 In [152]: b[0][0]==111# 这时,b的值也会变为111
Out[152]: True In [153]: c=b.copy() # 创建数组c,值为b的值,通过copy的方式

 In [157]: b[0][0]=222 # 将b[0][0]的值改为222

 In [158]: c[0][0]==222# 这时,c[0][0]还是没有改变
 Out[158]: False

 In [159]: c[0][0]
 Out[159]: 111

 

Numpy 操作的更多相关文章

  1. Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需 ...

  2. numpy操作

    python中使用了numpy的一些操作,特此记录下来: 生成矩阵,替换值 import numpy as np # 生成一行10列的矩阵 dataset = np.zeros((1, 10)) # ...

  3. 四 numpy操作数组输出图片

    一.读取一张图片,修改颜色通道后输出 # -*- coding=GBK -*- import cv2 as cv import numpy as np #numpy数组操作 def access_pi ...

  4. Python数据分析之Numpy操作大全

    从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...

  5. Numpy 学习之路(1)——数组的创建

    数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记. 文章中以下都基于以下方式的numpy导入: import numpy as np fro ...

  6. Python之Numpy详细教程

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...

  7. print( "Hello,NumPy!" )

    print( "Hello,NumPy!" ) 学习痛苦啊,今天学,明天丢.这种天气,还是睡觉最舒服了. 咱说归说,闹归闹,但还是得学才行啊. 之前在学习的过程中一直都有记录笔记的 ...

  8. numpy最后一部分及pandas初识

    今日内容概要 numpy剩余的知识点 pandas模块 今日内容详细 二元函数 加 add 减 sub 乘 mul 除 div 平方 power 数学统计方法 sum 求和 cumsum 累计求和 m ...

  9. [译]学习IPython进行交互式计算和数据可视化(四)

    第三章 使用Python进行数字计算 尽管IPython强大的shell和扩展后的控制台能被任何Python程序员使用,但是这个工具最初是科学奖为科学家设计的.它的主要设计目标就是为使用Python进 ...

随机推荐

  1. 使用zabbix监控mysql的三种方式

    使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...

  2. 如何给两个swiper建立关系

    单个swiper已经满足不了需求了. 各种花式轮播已经慢慢进入市场.swiper该如何立足,那么请看. <div class="swiper-container"> & ...

  3. 20170422早会训话,ps:程序出现两次BUG,领导很生气

    针对这种问题: 要讲3点 1.有没有拖团队后腿: 作为一名前端开发人员,对于前端开发的任务,我能够在第一时间完成,保证时间进度,但光做到这一点是不够的,不能只讲究任务,不考虑结果,会不会出现问题造成其 ...

  4. Matlab: 路径的操作

    添加相对路径 在matlab中当代码很多时常常将结果存在不同的文件夹下面,常常使用相对路径对函数进行调用,但有时会存在问题.举个栗子: 代码结构如下: /codes/A/AA/code1.m /cod ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(85)-Quartz 作业调度用法详解二

    前言 上一节我们学习了Quartz的基本用法 这一节学习通过XML配置的形式来执行任务 这一节主要认识一些属性,为下一步打基础 代码下载:链接:http://pan.baidu.com/s/1ge6j ...

  6. Git恢复指定文件

    Git恢复指定文件 修改这个文件的commit有哪些? git log -- <文件路径> 猜测需要还原的commit. 这个文件作了哪些更改? git diff <需要还原的com ...

  7. jsPlumb之流程图项目总结及实例

    在使用jsPlumb过程中,所遇到的问题,以及解决方案,文中引用了<数据结构与算法JavaScript描述>的相关图片和一部分代码.截图是有点多,有时比较懒,没有太多的时间去详细的编辑. ...

  8. WPF WebBrowser Memory Leak 问题及临时解决方法

    首先介绍一下内存泄漏(Memory Leak)的概念,内存泄露是指程序中已动态分配的堆内存由于某种原因未释放或者无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. 最近在使用W ...

  9. Apple使用Apache Mesos重建Siri后端服务

    苹果公司宣布,将使用开源的集群管理软件Apache Mesos,作为该公司广受欢迎的.基于iOS的智能个人助理软件Siri的后端服务.Mesosphere的博客指出,苹果已经创建了一个命名为J.A.R ...

  10. epii.js简约而不简单的JS模板引擎

    epii.js是什么 epii.js是一个 模板引擎,可快速实现数据与ui绑定,快速实现事件绑定,与处理,不依赖任何第三方库,仅仅8k,在native+webapp开发 和 web开发,h5微网页上均 ...