1,获取矩阵行列数

Import numpyasnp

#创建二维的naaray对象

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

print(a.shape)   #返回一个形状,是一个tuple

print(a.shape[0])#获得行数,试想如果是多维的呢,所以你就会明白为什么是[0]

print(a.shape[1])   #获得列数

2,矩阵的截取

importnumpyasnp

#创建二维的naaray对象

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

print(a[0:1])#这里不是很懂,看下面

print(a[1,2:4])#返回[89],返回第二行2-3个数

print(a[1,2:5])#返回[8910]证明了取第二行的2-4个数

3,按条件截取

importnumpyasnp

#创建二维的naaray对象

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

b=a[a>6]#截取矩阵a中大于6的元素,范围的是一维数组

print(b)

print(a>6)#其实布尔语句首先生成一个布尔矩阵,将布尔矩阵传入[](方括号)实现截取

4,满足一定条件的元素变成特定的值

importnumpyasnp

#创建二维的naaray对象

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

print(a)

#大于6清零后矩阵为

a[a>6]=0

print(a)

结果分别为:

[[12345]

[678910]]

[[12345]

[60000]]

5,矩阵合并

importnumpyasnp

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

a2=np.array([[5,6],[7,8]])

print(np.hstack([a1,a2]))#Horizontal

print(a1)#所以知道为什么是1256,2478了

print(np.vstack((a1,a2)))#vertical

np.concatenate((a1,a2),axis=0)#等价于np.vstack((a1,a2))

np.conca

6,通过函数创建矩阵

numpy自带创建narray对象的函数,可以方便的创建常用的有规律的矩阵

importnumpyasnp

a=np.arange(10)#默认从0开始到10(不包括10),步长为1

print(a)#返回[0123456789]

a1=np.arange(5,10)#从5开始到10(不包括10),步长为1

print(a1)#返回[56789]

a2=np.arange(5,20,2)#从5开始到20(不包括20),步长为2

print(a2)#返回[5791113151719]

7,linspace

创建指定数量等间隔的序列,实际生成一个等差数列

importnumpyasnp

a=np.linspace(0,10,7)#生成首位是0,末位是10,含7个数的等差数列

print(a)

8,logspace

logspace用于生成等比数列。

importnumpyasnp

a=np.logspace(0,10,7)#生成首位是10**0,末位是10**4,含5个数的等比数列

print(a)

9,ones,zeros,eye,empty

ones创建全1矩阵

zeros创建全0矩阵

eye创建单位矩阵

empty创建空矩阵(实际有值)

importnumpyasnp

one=np.ones((3,4))#创建3*4的全1矩阵

print(one)

zero=np.zeros((3,4))#创建3*4的全0矩阵

print(zero)

eye=np.eye(5)#创建5阶单位矩阵

print(eye)

empty=np.empty((3,4))#创建3*4的空矩阵(实际有值)

print(empty)

10,fromstring ——获得字符ASCII码

fromstring()方法可以将字符串转化成ndarray对象,需要将字符串数字化时这个方法比较有用,可以获得字符串的ascii码序列,转成相应字符的阿斯卡码。

importnumpyasnp

a="abcdef"

b=np.fromstring(a,dtype=np.int8)#因为一个字符为8位,所以指定dtype为np.int8

print(b)#返回[979899100101102]

11,fromfunction

fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。

例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。

importnumpyasnp

deffunc(i,j):

returni+j     #这里也可以是别的,比如再加一个9

a=np.fromfunction(func,(5,6))

#函数定义就是如此,第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小

print(a)

12,常用矩阵函数

同样地,numpy中也定义了许多函数,使用这些函数可以将函数作用于矩阵中的每个元素。

表格中默认导入了numpy模块,即 import numpy asnp

a为ndarray对象。

np.sin(a) 对矩阵a中每个元素取正弦,sin(x)

np.cos(a) 对矩阵a中每个元素取余弦,cos(x)

np.tan(a) 对矩阵a中每个元素取正切,tan(x)

np.arcsin(a)对矩阵a中每个元素取反正弦,arcsin(x)

np.arccos(a)对矩阵a中每个元素取反余弦,arccos(x)

np.arctan(a)对矩阵a中每个元素取反正切,arctan(x)

np.exp(a) 对矩阵a中每个元素取指数函数,ex

np.sqrt(a) 对矩阵a中每个元素开根号√x

importnumpyasnp

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

print(np.sin(a))

#结果

[[0.841470980.909297430.14112001]

[-0.7568025-0.95892427-0.2794155]]

print(np.arcsin(a))

#结果

#RuntimeWarning:invalidvalueencounteredinarcsin

print(np.arcsin(a))

[[1.57079633nannan]   #nan是not a number 的意思

[nannannan]]

13,矩阵乘法(点乘)

条件:第一个矩阵的列数等于第二个矩阵的行数,函数为dot

importnumpyasnp

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

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

ifa1.shape[1]==a2.shape[0]:#列数等于行数的话

print(a1.dot(a2))

14,矩阵的转置

transpose函数

importnumpyasnp

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

print(a.transpose())

15,矩阵的逆

求矩阵的逆需要先导入numpy.linalg,用linalg的inv函数来求逆。

矩阵求逆的条件是矩阵的行数和列数相同。

importnumpyasnp

importnumpy.linalgaslg

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

print(lg.inv(a))

#结果

[[-4.50359963e+159.00719925e+15-4.50359963e+15]

[9.00719925e+15-1.80143985e+169.00719925e+15]

[-4.50359963e+159.00719925e+15-4.50359963e+15]]

a=np.eye(3)#3阶单位矩阵

print(lg.inv(a))#单位矩阵的逆为他本身

#结果

[[1.0.0.]

[0.1.0.]

[0.0.1.]]

16,矩阵信息获取(如平均值)

获得矩阵中元素最大最小值的函数分别是max和min,可以获得整个矩阵、行或列的最大最小值。

importnumpyasnp

a=np.array([[1,3,9],[1,5,6]])

print(a.max())

print(a.min())

print(a.max(axis=0))#[456]axis=0行方向最大(小)值,即获得每列的最大(小)值

print(a.min(axis=1))#[14]axis=1列方向最大(小)值

#要想获得最大最小值元素所在的位置,可以通过argmax函数来获得

print(a.argmax(axis=1))

17,平均值mean()

获得矩阵中元素的平均值可以通过函数mean()。同样地,可以获得整个矩阵、行或列的平均值

importnumpyasnp

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

print(a.mean())#结果为:3.5

#同样地,可以通过关键字axis参数指定沿哪个方向获取平均值

print(a.mean(axis=0))#结果[2.53.54.5]

print(a.mean(axis=1))#结果[2.5.]

18,方差var()

importnumpyasnp

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

print(a.var())

print(a.var(axis=0))

print(a.var(axis=1))

19,标准差std()

importnumpyasnp

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

print(a.std())

print(a.std(axis=0))

print(a.std(axis=1))

20,中值median()

调用方法是numpy.median(x,[axis]),axis可指定轴方向,默认为axis=none,对所有数取中值

importnumpyasnp

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

print(np.median(x))#对所有数取中值

print(np.median(x,axis=0))#沿第一维方向取中值

print(np.median(x,axis=1))#沿第二维方向取中值

21,求和sum()

importnumpyasnp

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

print(a.sum())#对整个矩阵求和

print(a.sum(axis=0))#对行方向求和

print(a.sum(axis=1))#对列方向求和

22,累积和cussum()

某位置累积和指的是该位置之前(包括该位置)所有元素的和。

例如序列[1,2,3,4,5],其累计和为[1,3,6,10,15],即第一个元素为1,第二个元素为1+2=3,……,第五个元素为1+2+3+4+5=15。

矩阵求累积和的函数是cumsum(),可以对行,列,或整个矩阵求累积和。

importnumpyasnp

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

print(a.cumsum())#对整个矩阵求累积和

print(a.cumsum(axis=0))#对行方向求累积和

Numpy初步的更多相关文章

  1. 吴恩达 Deep learning 第二周 神经网络基础

    逻辑回归代价函数(损失函数)的几个求导特性 1.对于sigmoid函数 2.对于以下函数 3.线性回归与逻辑回归的神经网络图表示 利用Numpy向量化运算与for循环运算的显著差距 import nu ...

  2. #2 numpy pandas初步学习记录

    对numpy中的array进行了了解,array方法的取值arr_2d[0:2, 0:2] pandas 1,read_CSV方法 2,head方法 3,loc方法,取值前开后开, 4,replace ...

  3. Numpy, Pandas, Matplotlib, Scipy 初步

    Numpy: 计算基础,  以类似于matlab的矩阵计算为基础.  底层以C实现, 速度快. Pandas: 以numpy为基础, 扩充了很多统计工具. 重点是数据统计分析. Matplotlib: ...

  4. caffe初步实践---------使用训练好的模型完成语义分割任务

    caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

  5. Chainer的初步学习

    人们都说Chainer是一块非常灵活you要用的框架,今天接着项目里面的应用,初步接触一下,涨涨姿势,直接上源码吧,看着好理解.其实跟Tensorflow等其他框架都是一个套路,个人感觉更简洁了. & ...

  6. Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays

    原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...

  7. Python tushare 初步了解

    一.安装 1.Python 2.numpy 3.pandas 4.lxml 5.............. n.tushare 二.初步测试

  8. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  9. 使用NumPy、Numba的简单使用(一)

    Numpy是python的一个三方库,主要是用于计算的,数组的算数和逻辑运算.与线性代数有关的操作. 很多情况下,我们可以与SciPy和 Matplotlib(绘图库)一起使用.来替代MatLab,下 ...

随机推荐

  1. (二叉树 递归) leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  2. 2017-12-19python全栈9期第四天第二节之列表的增删查改之按索引改和按切片改

    #!/user/bin/python# -*- coding:utf-8 -*-li = ['zs','ls','ww','zl','xx']li[0] = 'cxvb' #按索引位置print(li ...

  3. CSS难点 为什么height设置100%会失效,分栏目等高布局(高度自适用布局)的实现方案

    前言 相信在平时写CSS的时候大家都或多或少遇见过设置了height为百分比的时候发现不起作用.今天我们就来一探究竟 原因:父元素未设置具体高度,子元素设置height:100%是无效的. 现象以及方 ...

  4. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  5. SpringBoot系列: 使用 consul 作为服务注册组件

    本文基本上摘自纯洁的微笑的博客 http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html . 感谢作者的付出. ...

  6. vue-cli3.X 打包后上传服务器刷新报 404的问题

    vue-cli3.X 默认配置 比2.X体验好很多,比如路由 如图,本地正常,传到服务器,因为二级目录,刷新就404,或 502等,找不到文件 nginx解决: location /{ error_p ...

  7. Notepad++崩溃后文件内容找不到问题

    也许是因为Ctrl + s 摁太多太频繁,一不小心Notepad++崩溃了 重启后发现原来的文件还在,但是文件内容全部都被清空了 我没有手动备份这个文件, 如何找回??? 点击设置,首选项,里面有个备 ...

  8. Linux 踩过的坑系列-01

    关于默认网关的添加.记得楼主之前有一次,无意之间,也不知道做了什么删除文件里面内容的操作,配置好静态IP之后上不了外网.翻阅个各种资料都是没有找到问题.最后发现问题在于配置的虚拟机网卡文件的网关打错了 ...

  9. JavaSE笔记-集合

    Java集合大致可分为:List,Set,Map,Queue List:有序,可重复 Set:无序(输出和插入顺序不一定一致),不可重复 Map:映射关系,根据key去访问value Queue:队列 ...

  10. laravel5.4 向闭合函数内部传递参数

    laravel  向闭合函数内部传入参数