深度学习——学习目录

NumPy介绍

NumPy系统是Python的一种开源的数值计算扩展。
这种工具可用来存储和处理大型矩阵,
比Python自身的嵌套列表(nested list structure)结构要高效的多
(该结构也可以用来表示矩阵(matrix))。

numpy基础

矩阵运算

矩阵和数的计算:
加法四则运算:
一个矩阵与一个数字进行四则运算就是把矩阵中的每一个元素都与这个数字进行四则运算:

import numpya=numpy.arange(12).reshape(3,4)
print('a-------')
print(a)
print('a1-------')
a1=a+1
print(a1)
print('a2-------')
a2=a-1
print(a2)
print('a3-------')
a3=a*2
print(a3)
print('a4-------')
a4=a/2
print(a4)
print('-------')


这是一个numpy的广播机制造成的,在运算过程中,四则运算的值被广播到所有的元素上面。

假设有下面这么一个txt文件,要用numpy打开:

Year,WHO region,Country,Beverage Types,Display Value
1986,Western Pacific,Viet Nam,Wine,0
1986,Americas,Uruguay,Other,0.5
1985,Africa,Cte d'Ivoire,Wine,1.62
1986,Americas,Colombia,Beer,4.27
1987,Americas,Saint Kitts and Nevis,Beer,1.98
1987,Americas,Guatemala,Other,0
1987,Africa,Mauritius,Wine,0.13
1985,Africa,Angola,Spirits,0.39
1986,Americas,Antigua and Barbuda,Spirits,1.55
1984,Africa,Nigeria,Other,6.1
1987,Africa,Botswana,Wine,0.2
1989,Americas,Guatemala,Beer,0.62
1985,Western Pacific,Lao People's Democratic Republic,Beer,0
1984,Eastern Mediterranean,Afghanistan,Other,0
1985,Western Pacific,Viet Nam,Spirits,0.05
1987,Africa,Guinea-Bissau,Wine,0.07
1984,Americas,Costa Rica,Wine,0.06
1989,Africa,Seychelles,Beer,2.23
1984,Europe,Norway,Spirits,1.62
1984,Africa,Kenya,Beer,1.08
1986,South-East Asia,Myanmar,Wine,0
1989,Americas,Costa Rica,Spirits,4.51
1984,Europe,Romania,Spirits,2.67
1984,Europe,Turkey,Beer,0.44
1985,Africa,Comoros,Other,
1984,Eastern Mediterranean,Tunisia,Other,0
1985,Europe,United Kingdom of Great Britain and Northern Ireland,Wine,1.36
1984,Eastern Mediterranean,Bahrain,Beer,2.22
1987,Western Pacific,Viet Nam,Beer,0.11
1986,Europe,Italy,Other,
1986,Africa,Sierra Leone,Other,4.48
1986,Western Pacific,Micronesia (Federated States of),Wine,0
1989,Africa,Mauritius,Beer,1.6

……

import numpyworld_alcohol=numpy.genfromtxt("world_alcohol.txt",delimiter=",",dtype=str)
print(type(world_alcohol))
print(world_alcohol)

首先导入numpy库,然后用numpy.genfromtxt以“,”为分隔符将world_alcohol.txt文件导入;
然后用print(type(world_alcohol))打印world_alcohol的类型;
最后再将整个world_alcohol打印出来。
结果如下:

如果不知道某个方法的作用,可以打印help语句来获取:

print(help(numpy.genfromtxt))

它会打印出帮助注释:

利用numpy的array可以创建矩阵:

import numpyvector=numpy.array([5,10,15,20])
matrix=numpy.array([[5,10,15,20],[20,25,30],[35,40,45]])
print(vector)
print(matrix)


通过.shape方法可以打印矩阵的属性:

import numpyvector=numpy.array([1,2,3,4])
print(vector.shape)
matrix=numpy.array([[2,10,15],[20,25,30]])
print(matrix.shape)


第一行表示有四个元素,第二行表示这是一个2行3列的矩阵。通过.dtype方法可以打印元素的类型:

import numpynumbers=numpy.array([1,2,3,4])
print(numbers)
print(numbers.dtype)


如果想要从矩阵中提取相应的元素,可以直接用索引,以打开的上述txt文件为例:

import numpyworld_alcohol=numpy.genfromtxt("world_alcohol.txt",delimiter=",",dtype=str,skip_header=1)
print(world_alcohol)
uruguay_other_1986=world_alcohol[1,4]
third_country=world_alcohol[2,2]
print(uruguay_other_1986)
print(third_country)

numpy同样也提供了切片的操作:

import numpyvector=numpy.array([5,10,15,20])
print(vector[0:3])
matrix=numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
print(matrix[:,1])
print(matrix[:,0:2])
print(matrix[1:3,0:2])

这里要注意的是:切片操作的时候可以用“:”代替一整行或者一整列以及从某行到某行和从某列到某列,还有,切片是不包含后面的参数内容的。

可以利用矩阵元素的值是否与给定的值相等打印bool值:

import numpyvector=numpy.array([5,10,15,20])
print(vector==10)matrix=numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
print(matrix==25)


然后可以将获得的bool值作为索引带回到矩阵中,同时判断是否相等同样支持逻辑运算:

import numpyvector=numpy.array([5,10,15,20])
equal_to_ten=(vector==10)
print(equal_to_ten)
print(vector[equal_to_ten])matrix=numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
second_column_25=(matrix[:,1]==25)
print(second_column_25)
print(matrix[second_column_25,:])
matrix[second_column_25,1]=10
print(matrix)equal_to_ten_and_five=(vector==10)&(vector==5)
print(equal_to_ten_and_five)equal_to_ten_or_five=(vector==10)|(vector==5)
print(equal_to_ten_or_five)

可以利用.astype方法改变矩阵元素的类型:

import numpyvector=numpy.array(["1","2","3"])
print(vector.dtype)
print(vector)
vector=vector.astype(float)
print(vector.dtype)
print(vector)

numpy也提供了求最值和求和的方法:

import numpyvector=numpy.array([5,10,15,20])
print(vector.min())matrix=numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
print(matrix.sum(axis=1))
print(matrix.sum(axis=0))

sum中的参数:axis=1表示对行求和,axis=0表示对列求和

numpy也提供了一些很便利的方法:

np.arange(15)

生成从0到14共15个数字:

a=np.arange(15).reshape(3,5)

将向量转换为矩阵的操作:

分别打印矩阵的属性、维度、元素类型名、元素数量:

print(a.shape)
print(a.ndim)
print(a.dtype.name)
print(a.size)

print(np.zeros((3,4)))
print(np.ones((2,3,4),dtype=np.int32))

创建一个元素全为0,2行3列的矩阵和元素全为1,3维3行4列的矩阵:

print(np.arange(10,30,5))
print(np.arange(0,2,0.3))

指定起点、终点和步长,打印向量:

print(np.random.random((2,3)))

生成一个2行3列的随机数矩阵:

import numpy as npprint(np.arange(15))
a=np.arange(15).reshape(3,5)
print(a)
print(a.shape)
print(a.ndim)
print(a.dtype.name)
print(a.size)print(np.zeros((3,4)))
print(np.ones((2,3,4),dtype=np.int32))print(np.arange(10,30,5))
print(np.arange(0,2,0.3))print(np.arange(12).reshape(4,3))
print(np.random.random((2,3)))

numpy中也提供了一些常量:

import numpy as np
from numpy import piprint(np.linspace(0,2*pi,100))

生成从0到2π的100个数:

import numpy as npB=np.arange(3)
print(B)
print(np.exp(B))
print(np.sqrt(B))

开方运算和e的次方运算:

a=np.array([20,30,40,50])
b=np.arange(4)
print(a)
print(b)
c=a-b
print(c)
c=c-1
print(c)
b**2
print(b**2)
print(a<35)

进行矩阵之间的四则运算和乘方运算、逻辑运算:

A=np.array([[1,1],[0,1]
])
B=np.array([[2,0],[3,4]
])
print(A)
print('--------')
print(B)
print('--------')
print(A*B)
print('--------')
print(A.dot(B))
print('--------')
print(np.dot(A,B))

还有矩阵运算:

a=np.floor(10*np.random.random((3,4)))
print(a)
print('-------')
print(a.ravel())

将矩阵转换为向量:

print('-------')
a.shape=(6,2)
print(a)
print('-------')
print(a.T)print(a.reshape(3,-1))

然后再转换成另一种属性的矩阵,还可以转置和自定义行列:

import numpy as npa=np.floor(10*np.random.random((2,2)))
b=np.floor(10*np.random.random((2,2)))
print(a)
print(b)
print(np.hstack((a,b)))
print(np.vstack((a,b)))

矩阵的横竖拼接:

import numpy as npa=np.floor(10*np.random.random((2,12)))
print(a)
print(np.hsplit(a,3))
print(np.hsplit(a,(3,4)))

矩阵的横向平均拆分和指定拆分:

a=np.floor(10*np.random.random((12,2)))
print(a)
print(np.vsplit(a,3))

矩阵的竖向拆分:

import numpy as npa=np.arange(12)
b=a
print(b is a )
b.shape=3,4
print(a.shape)
print(id(a))
print(id(b))c=a.view()
print(c is a)
c.shape=2,6
print(a.shape)
c[0,4]=1234
print(a)
print(id(a))
print(id(c))d=a.copy()
print(d is a)
d[0,0]=9999
print(a)
print(d)

矩阵的几种复制:

import numpy as npdata=np.sin(np.arange(20)).reshape(5,4)
print(data)
ind=data.argmax(axis=0)
print(ind)
data_max=data[ind,range(data.shape[1])]
print(data_max)

矩阵竖向找最大值索引并将其打印出来:

a=np.arange(0,40,10)
print(a)
b=np.tile(a,(2,3))
print(b)

矩阵的成倍扩大:

import numpy as npa=np.array([[4,3,5],[1,2,1]])
print(a)
b=np.sort(a,axis=1)
print(b)
a.sort(axis=0)
print(a)
a=np.array([4,3,1,2])
j=np.argsort(a)
print(j)
print(a[j])

矩阵的横向排序、竖向排序和递增索引排序:

01、python数据分析与机器学习实战——Python科学计算库-Numpy相关推荐

  1. 01、python数据分析与机器学习实战——python数据分析处理库-Pandas

    pandas介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. panda ...

  2. 01、python数据分析与机器学习实战——Python数据可视化库-Matplotlib

    Matplotlib介绍 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. Matplotlib基础 1.折线图绘制 假设,我 ...

  3. 01、python数据分析与机器学习实战——Python可视化库Seaborn

    seaborn简介 Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图. seaborn基础 i ...

  4. 【A-003】python数据分析与机器学习实战 Python科学计算库 Pandas数据分析处理库(二)

    目录: 处理缺失数据制作透视图删除含空数据的行和列多行索引使用apply函数 本节要处理的数据来自于泰坦尼克号的生存者名单,它的数据如下: PassengerId Survived Pclass .. ...

  5. 跟着迪哥学python 经管之家_跟着迪哥学Python数据分析与机器学习实战

    本书结合了机器学习.数据分析和Python语言,通过案例以通俗易懂的方式讲解了如何将算法应用到实际任务. 全书共20章,大致分为4个部分.第一部分介绍了Python的工具包,包括科学计算库Numpy. ...

  6. 23神经网络 :唐宇迪《python数据分析与机器学习实战》学习笔记

    唐宇迪<python数据分析与机器学习实战>学习笔记 23神经网络 1.初识神经网络 百度深度学习研究院的图,当数据规模较小时差异较小,但当数据规模较大时深度学习算法的效率明显增加,目前大 ...

  7. 唐宇迪学习笔记1:Python环境安装、Pytho科学计算库——Numpy

    目录 一.AI数据分析入门 ​1.案例来源 2.Python环境配置(Python3) Python的安装 Python库安装工具 Jupyter Notebook 二.Python科学计算库--Nu ...

  8. python矩阵运算法则_导数与梯度、矩阵运算性质、科学计算库numpy

    一.实验介绍 1.1 实验内容 虽然在实验一中我想尽量少的引入(会让人放弃继续学习的)数学概念,但我似乎还是失败了.不过这几乎是没有办法的事,要想真正学会深度学习,没有一定的数学基础(高等数学.线性代 ...

  9. 一文带你熟悉简单实用的Python科学计算库NumPy

    Python科学计算库NumPy 安装 数组的创建 array创建 **arange** 创建 **随机数创建** 方法numpy.random.random(size=None) 方法numpy.r ...

最新文章

  1. StringBuider 在什么条件下、如何使用效率更高?
  2. MxGraph从入门到精通之2:HelloWorld程序解析
  3. java xml 反射_java使用dom4j解析xml配置文件实现抽象工厂反射示例
  4. Boost:以协程的方式实现echo服务器的实例
  5. iOS开发小技巧--高斯模糊框架的应用
  6. 使用Server 2008新GPO做驱动器映射
  7. vs2015移植linux编译,windows平台移植(原linux项目)时,用vs2015开发,碰到的问题及处理方案记录...
  8. linux中 ECShop的文件不能写
  9. 原生ajax请求流程
  10. matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
  11. 《操作系统》课程设计任务书
  12. DAU是啥,数据指标是啥?必知必会的数据分析常识
  13. 傲骨贤妻第一季/全集The Good Wife迅雷下载
  14. 我眼中的程序化交易之路
  15. DataFrame-删除行列
  16. CAD编辑指南7:新建空白图纸和新建表格、导入图片
  17. 为何基于树的模型在表格型数据中能优于深度学习?
  18. linux命令建立组管理员,Linux gpasswd命令:为用户组设置密码或者添加删除用户组成员及管理员命令|程序员日记|程序员日记记录专业的技术知识...
  19. Excel设置下拉选项的方法
  20. 5D摇杆模块(HAL)

热门文章

  1. TOMCAT虚拟路径配置
  2. LeetCode-Search In Rotated Sorted Array2题解
  3. Hadoop配置文件
  4. UML小结以及基于领域模型的系统设计初步
  5. 中国移动问答 赢取幸运卡标准答案
  6. .net数据源控件绑定mysql_数据源控件与数据绑定控件的进一步简单讨论(1)
  7. flag push tcp 作用_TCP/IP协议到底在讲什么?
  8. 7-4 找到共同的选修课-hebust (10 分)
  9. C语言程序练习-L1-003 个位数统计 (15分)
  10. 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备曝光!不是手机