import numpy as np

numpy属性

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

print(array)

print(‘number of dim’,array.ndim)

print(‘shape:’,array.shape)

print(‘size’,array.size)

numpy的创建array

创建数组

a = np.array([2,23,4])

print(a)

指定数据

a = np.array([2,23,4],dtype=np.int)

print(a.dtype)

a = np.array([2,23,4],dtype=np.int32)

print(a.dtype)

a = np.array([2,23,4],dtype=np.float)

print(a.dtype)

a = np.array([2,23,4],dtype=np.float32)

print(a.dtype)

创建特定的数据

矩阵

a = np.array([[2,23,4],[2,32,4]])

print(a)

全零数组

a = np.zeros((3,4))

print(a)

创建全一数组,同时指定这些特定数据的dtype

a = np.ones((3,4),dtype=np.int)
a

创建全空数组,其实每个值都是接近零的数

a = np.empty((3,4))
a

用arange创建连续数组

a = np.arange(10,20,2)
a

用reshape改变数据的形状

a = np.arange(12).reshape((3,4))
a

用linspace创建线段型数据

a = np.linspace(1,10,20)
a

a = np.linspace(1,10,20).reshape((5,4))
a

Numpy基础运算1

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
a,b

numpy的几种基本运算

c=a-b
c

c=a+b
c

c=a*b
c

#乘方

c=b**2
c

数学工具,三角函数

c=10*np.sin(a)
c

除了函数应用外,在脚本中对print函数进行一些修改可以进行逻辑判断

print(b<3)

此时由于进行逻辑判断,

返回的是一个bool类型的矩阵,即对满足要求的返回True,不满足的返回False。

上述程序执行后得到的结果是[True True True False]。 需要注意的是,

#如果想要执行是否相等的判断, 依然需要输入 == 而不是 = 来完成相应的逻辑判断。

#上述运算均是建立在一维矩阵,即只有一行的矩阵上面的计算,

如果我们想要对多行多维度的矩阵进行操作,需要对开始的脚本进行一些修改:

a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))

print(a)

print(b)

稍显不同的是,Numpy中的矩阵乘法分为两种,

#其一是前文中的对应元素相乘,
#其二是标准的矩阵乘法运算,
#即对应行乘对应列得到相应元素:

矩阵乘法

c_dot = np.dot(a,b)

print(c_dot)

另一种dot的表示方法

c_dot_2 = a.dot(b)

print(c_dot_2)

sum(),min(),max()的使用

import numpy as np

a=np.random.random((2,4))

print(a)

np.sum(a)

np.min(a)

np.max(a)

查找运算

如果你需要对行或者列进行查找运算,

就需要在上述代码中为 axis 进行赋值。

当axis的值为0的时候,将会以列作为查找单元,

当axis的值为1的时候,将会以行作为查找单元。

print(“a =”,a)

print(“sum =”,np.sum(a,axis=1))

print(“min =”, np.min(a,axis=0))

print(“max =”,np.max(a,axis=1))

numpy基础运算2

有关索引的运算

import numpy as np
A = np.arange(2,14).reshape((3,4))

print(np.mean(A))
print(np.average(A))

模仿dot()的使用法则,mean()还有另一种写法

print(A.mean())

同样的,可以写出求解中位数的函数

#print(A.median()) # 用不了?
np.median(A)

和matlab中的cumsum()累加函数类似,Numpy中也具有cumsum()函数

print(np.cumsum(A))

累差运算的函数

print(np.diff(A))
#每一行中后一项与前一项之差。故一个3行4列矩阵通过函数计算得到的矩阵便是3行3列的矩阵。

nonzero()函数

print(np.nonzero(A))
#这个函数将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵。

#wo们可以对所有元素进行仿照列表一样的排序操作,
#但这里的排序函数仍然仅针对每一行进行从小到大排序操作:

import numpy as np
A = np.arange(14,2,-1).reshape((3,4))
print(A)

print(np.sort(A))

矩阵的转置有两种表示方法

print(np.transpose(A))

print(A.T)

特别的,numpy里面有clip()函数,例子如下

print(A)

print(np.clip(A,5,9))

Numpy索引

一维索引

类似 a[2] 的索引方法

import numpy as np

A = np.arange(3,15)

print(A[3])

print(A[0])

此时我们将矩阵转化成二维的,然后进行同样的操作

A = np.arange(3,15).reshape((3,4))

print(A[2])

此时对应的实际上是矩阵A从第三行(从0开始算)开始的所有元素

二维索引

A = np.arange(3,15).reshape((3,4))
A

print(A[1][1])

其他表示方法

print(A[1,1])

在python的list中,我们可以利用 : 对一定范围内的元素进行切片操作,

在numpy中我们依然可以给出相应的方法

print(A[1,1:3])

这一表示形式即针对第二行中第2到第4列元素进行切片输出(不包含第4列)。

此时我们适当的利用for函数进行打印

for row in A:
print(row)

此时他会逐行进行打印操作

如果想逐列进行打印,就需要稍微变化一下

for column in A.T:
print(column)

最后说一个关于逐代输出的问题

import numpy as np

A = np.arange(3,15).reshape(3,4)

print(A.flatten())

for item in A.flat:
print(item)

#这一脚本中的flatten是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。

而flat是一个迭代器,本身是一个object属性

numpy array合并

np.vstack() 上下合并

import numpy as np

A = np.array([1,1,1])
A

B = np.array([2,2,2])
B

print(np.vstack((A,B)))

#vertical stack本身属于一种上下合并,即对括号中的两个整体进行对应操作。此时我们对组合而成的矩阵进行属性探究:

C = np.vstack((A,B))

print(A.shape, C.shape)

np.hstack() 左右合并

D = np.hstack((A,B))

print(D)

print(A.shape,D.shape)

np.newaxis() 转置操作

#说完了array的合并,
#我们稍稍提及一下前一节中转置操作
#,如果面对如同前文所述的A序列,
#转置操作便很有可能无法对其进行转置(因为A并不是矩阵的属性),
#此时就需要我们借助其他的函数操作进行转置:

print(A[np.newaxis,:])

print(A[np.newaxis,:].shape)

print(A[:,np.newaxis])

print(A[:,np.newaxis].shape)

结合着上面的知识,我们把它综合起来:

import numpy as np

A = np.array([1,1,1])[:,np.newaxis]
A

B = np.array([2,2,2])[:,np.newaxis]
B

C = np.vstack((A,B))
C

D = np.hstack((A,B))
D

print(D)

print(A.shape,D.shape)

np.concatenate() 合并多个矩阵或序列

#当你的合并操作需要针对多个矩阵或序列时,借助concatenate函数可能会让你使用起来比前述的函数更加方便:

C = np.concatenate((A,B,B,A),axis=0)
C

print©

D = np.concatenate((A,B,B,A),axis=1)
D

print(D)

#axis参数很好的控制了矩阵的纵向或是横向打印,相比较vstack和hstack函数显得更加方便。

Numpy array 分割

创建数据

import numpy as np

A = np.arange(12).reshape((3,4))

print(A)

纵向分割

print(np.split(A,2,axis=1))

C,D = np.split(A,2,axis=1)

C,D

横向分割

print(np.split(A,3,axis=0))

错误的分割

范例的Array只有4列,只能等量对分,因此输入一下程序代码后python会报错

print(np.split(A,3,axis=1))

为了解决这种情况,我们会有下面这种方式

不等量的分割

print(np.array_split(A,3,axis=1))

其他的分割方式

print(np.vsplit(A,3)) # #等于 print(np.split(A, 3, axis=0))

print(np.hsplit(A,2))

Numpy copy & deep copy

= 的赋值方式会带有关联性

首先import numpy 并建立变量,给变量赋值

import numpy as np

a = np.arange(4)

b = a

c = a

d = b

改变a的第一个值,b,c,d,的第一个值也会随之改变

a[0]=11

print(a)

确定b, c, d, 与 a 是否相同

b is a

c is a

d is a

同样,改变d的值,a,b,c也会改变

d[1:3] = [22,33]

print(a)

print(b)

print©

copy的赋值方式没有关联性

b = a.copy()

print(b)

a[2] = 44

print(a)

print(b)

numpy学习笔记(莫烦python)相关推荐

  1. 【莫烦Python】Numpy教程

    目录 前言 1.numpy属性 2.numpy的array创建 3.numpy的基础运算 4.numpy的基础运算2 5.numpy的索引 6.numpy的array合并 7.numpy的array分 ...

  2. 【莫烦Python】Pandas教程

    目录 前言 1.Pandas vs Numpy 2.基本介绍 3.选择数据 4.设置值 5.处理丢失的数据 6.pandas导入导出 7.pandas合并concat 8.pandas合并merge ...

  3. 莫烦Python NumpyPandas 学习笔记

    莫烦Python Numpy&Pandas 学习笔记 原文(视频)地址:https://www.bilibili.com/video/BV1Ex411L7oT 1. 安装 numpy官方网站: ...

  4. 【莫烦Python】Matplotlib学习笔记(二)

    [莫烦Python]Matplot学习笔记(一) [莫烦Python]Matplotlib学习笔记(二) 一.Bar柱状图/条形图 二.Contours等高线图 三.Image图像 四.3D图像 五. ...

  5. tkinter message_【莫烦Python】Tkinter 做简单的窗口视窗lt;学习笔记(2)gt;

    接(1) 还有五个苹果:[莫烦Python]Tkinter 做简单的窗口视窗<学习笔记>​zhuanlan.zhihu.com 登录窗口小例子(pickle存取) import

  6. 【莫烦Python】Python 基础教程——学习笔记

    文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...

  7. 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记

    [莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...

  8. 莫烦python教程下载_Python 有哪些好的学习资料或者博客?

    Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...

  9. tkinter笔记:scale 尺度 (莫烦python笔记)

    1 主题框架 还是一样的 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geometr ...

最新文章

  1. Redis数据库设置密码
  2. 深度度量学习的这十三年,难道是错付了吗?
  3. 【计算理论】下推自动机 PDA 及 计算示例
  4. 对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了
  5. VUE - get 、post 请求后端接口:get 、post 写法 (Axios 中文说明文档地址)
  6. “自带大屏”的便利店,你见过吗?
  7. STM32F103mini教程学习总结与心得(四)---->看门狗
  8. 如何优雅的输出PHP调试信息
  9. 看图说话,FastJson 并没有那么流行!
  10. 机器学习课程笔记【十二】- 主成分分析
  11. Listary安装+破解
  12. CEIWEI CommMonitor 串口监控精灵v12.0 串口过滤;串口监控;Serial port monitor tools
  13. Java项目集成工作流引擎解决方案及实例展示(前后分离版)
  14. 3D数学 AABB(轴对齐矩形边界框)
  15. 呼叫中心电话系统怎么搭建?能用到哪些智能应用?
  16. 3dsmax-角色骨骼
  17. 最常用算法汇总(一)
  18. 关于代码审查的一些探讨和总结
  19. php flash 图片上传,php+jquery+ajax无刷新图片上传裁切,模拟flash头像上传实例
  20. Supervisor安装、配置、开启启动

热门文章

  1. dubbo是长连接还是短连接_从快手短视频看,内容平台如何做好产品与用户的连接及运营实操...
  2. Codeforces 1284E New Year and Castle Building (计算几何)
  3. 【做题记录】Codeforces做题记录
  4. problem a: 简单的整数排序_什么是基数排序?
  5. tftp服务器_Transfer for Mac(TFTP服务器)
  6. 客户端相关知识学习(一)之混合开发,为什么要在App中使用H5页面以及应用场景、注意事项...
  7. 实战:SQL sever如何实现同一列上下行运算?
  8. springboot shiro和freemarker集成之权限控制完全参考手册(跳过认证,登录由三方验证,全网首发)...
  9. Mysql实现企业级日志管理、备份与恢复
  10. datable转xml