安装:  pip install numpy

    pip install numpy -i https://pypi.douban.com/simple      豆瓣镜像下载

常量:

np.pi  π

创建矩阵数组

 import numpy as np
# array=np.array([[1,2,3],[5,6,7]]) #定义一个2行3列的矩阵数组.2行=2维
# print(array.ndim) #返回矩阵数组的维数
# print(array.shape) #返回矩阵数组的维数和列数。(2, 3)
# print(array.size) #返回矩阵数组的元素总个数
#
# array1=np.array([[1,2,3],[5,6,7]],dtype=np.int) #定义一个矩阵数组
# #dtype 指定每个元素的数据类型 可选
# print(array1.dtype) #返回元素的数据类型。int32
# array2=np.zeros((3,4)) #定义一个元素值都是0,3行4列的矩阵数组
# print(array2)
# array3=np.ones((3,4)) #定义一个元素值都是1,3行4列的矩阵数组
#参数2 可选
dtype="uint8" 指定每个数据的类型,默认浮点型
 # print(array3)
#array4=np.empty((3,4)) #定义一个元素值都是空,3行4列的矩阵数组
#空 值非常接近0 6.23042070e-307
#print(array4)
#array5=np.arange(10,20,2) #定义一个一维n列矩阵数组
#参数1 参数2 数据范围
# 参数3 步长值 [10 12 14 16 18]
#print(array5)
# array6=np.arange(10,33,2).reshape((3,4)) #定义一个3行4列的有序矩阵数组
# print(array6)
#array7=np.linspace(1,10,5) #定义一个一维数组
#元素值是:在1到10之间平均分成5个点。注意包括10
#[ 1. 3.25 5.5 7.75 10. ]
#print(array7)
array8=np.linspace(1,10,6).reshape((2,3)) #定义一个2行3列的矩阵数组
print(array8)

i=np.zeros([4,6,3],np.uint8)      #元素值都是0,产生4个表,每个表是6行3列      np.uint8是数据类型

np.random.rand()     返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1

矩阵数组的运算:

矩阵乘法:

只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义

 import numpy as np
a=np.array([1,2,3,4])
b=np.arange(10,17,2)
x=np.array([[1,2],[10,20]])
y=np.arange(10,17,2).reshape((2,2))
z=np.array([[1,2,3],[10,20,30]])
c=a-b #两个矩阵数组对应元素分别进行计算
c=a**2
c=np.sin(a)
c=a<3 #[ True True False False]
c=x*y #两个矩阵数组对应元素分别进行计算
d=np.dot(x,y) #矩阵乘法[看上面的图]
d=x.dot(y) #矩阵乘法 c=np.random.random((2,3)) #产生一个2行3列的随机数矩阵
#每个元素的随机数在0到1之间
c=np.min(x) #找出最小元素的值
c=np.max(x) #找出最大元素的值
c=np.sum(z,axis=1) #每一行求和 [ 6 60]
c=np.sum(z,axis=0) #每一列求和.[11 22 33]
c=np.argmin(a) #最小值的索引
c=np.argmax(z) #最大值的索引
c=np.average(z) #求全部元素的平均值
c=np.median(z) #找出中位数
#中位数:将数据按照从小到大或从大到小的顺序排列,如果数据个数是奇数,则处于最中间位置的数就是这组数据的中位数;如果数据的个数是偶数,则中间两个数据的平均数是这组数据的中位数
c=np.cumsum(z) #返回各元素与前面元素累加后的一维矩阵。[ 1 3 6 16 36 66]
z=np.array([[100,2,3],[10,20,30]])
c=np.diff(z) #各维 后列减去前列后 的矩阵。[[-98 1] [ 10 10]]
z=np.array([[100,0,3],[10,20,30]])
c=np.nonzero(z) #找出非0元素的位置
#(array([0, 0, 1, 1, 1], dtype=int64), array([0, 2, 0, 1, 2], dtype=int64))
#第一个数组是非0元素的行索引,第二个数组是非0元素的列索引
d=np.transpose(c) #通过行列转换,返回相应的位置矩阵。[[0 0] [0 2] [1 0] [1 1] [1 2]]
# 注意参数c的值
d=z[c] #找出相应位置元素的一维矩阵。[100 3 10 20 30]
#注意参数c的值 c是位置元组
c=np.sort(z) #对各维分别进行排序-升序。[[ 0 3 100] [ 10 20 30]]
z=np.array([[100,2,3,50],[10,20,30,15],[35,86,74,14]])
c=np.transpose(z) #行列转换,行变成列,列变成行
# [[100 10] [ 0 20] [ 3 30]]
c=z.T #与np.transpose(z)相同
c=np.clip(z,5,9)#矩阵z中小于5的元素都等于5,大于9的元素都等于9
#参数2 最小值;参数3 最大值
z=np.array([[10,2,3,50],[10,20,30,15]])
c=np.mean(z) #求所有元素的平均值
c=z.mean() #求所有元素的平均值
c=np.mean(z,axis=1) #各行求平均值。[16.25 18.75]
c=np.mean(z,axis=0) #各列求平均值。[10. 11. 16.5 32.5]
c=a[1] #返回一维矩阵索引号对应的值.3
c=z[1] #多维矩阵就返回行索引对应的矩阵。[10 20 30 15]
c=z[1][1] #返回第一行第一列的值
c=z[1,1] #返回第一行第一列的值
c=z[1,:] #返回第一行的所有元素。[10 20 30 15]
# : 代表所有
c=z[:,1] #返回第一列的所有元素。[ 2 20]
c=z[1,1:3] #返回第一行的1到3的元素
#注意 顾头不顾尾
c=z[0:1,1] #返回第一列的0到1的元素
z=np.array([[10,2,3,50],[10,20,30,15],[100,500,200,800]])
for r in z: #每次返回一行
#print(r)
pass
for r in z.T: #每次返回一列
#print(r)
pass
c=z.flat #把矩阵转换成一维迭代器
c=z.flatten() #把矩阵转换成一维矩阵
for i in z.flat: #每次返回一个元素
#print(i)
pass
a=np.array([[1,2,3,4],[60,20,90,10]])
b=np.array([[500,200,800,444],[2,2,2,2]])
c=a.shape #返回多维矩阵的行数和列数。(2, 4)
c=b.shape #返回一维矩阵的列数.(4,)
c=np.vstack((a,b)) #合拼成一个矩阵
#以行为单位,按行顺序排列
c=np.hstack((a,b)) #合拼成一个矩阵
#以行为单位,按列顺序排列
x=np.array([3,8,4,9])
y=np.array([[5,6,7,8],[10,30,90,50],[500,200,800,444]])
c=y[:,np.newaxis] #多维给每行加一层行嵌套
c=x[:,np.newaxis] #一维给每个元素加一层行嵌套。一行n列变成n行1列
c=x[np.newaxis,:]
d=y[np.newaxis,:] #给矩阵加一个行总嵌套
x=np.array([[3,8,4,9],[500,200,800,444]])
y=np.array([[5,6,7,8],[10,30,90,50]])
c=np.concatenate((x,y,x),axis=0) #合拼成一个矩阵
#以行为单位,按行顺序排列
c=np.concatenate((x,y,x),axis=1) #合拼成一个矩阵
#以行为单位,把每列合拼成一行
y=np.array([[5,6,7,8],[10,30,90,50],[500,200,800,444],[1,2,3,4]])
c=np.split(y,2,axis=0) #分割矩阵【必须均等分】
#把矩阵分层2个
#axis=0 以行分割;
# axis=1 以列分割 [array([[ 5, 6],[ 10, 30],[500, 200],[ 1, 2]]), array([[ 7, 8],[ 90, 50],[800, 444],[ 3, 4]])]
c=np.split(y,2,axis=1)
c=np.array_split(y,3,axis=0) #分割矩阵【可以不均等分】
c=np.vsplit(y,2) #跟np.split(y,2,axis=0)相同
c=np.hsplit(y,2) #跟np.split(y,2,axis=1)相同
a=np.arange(4)
b=a #把a的地址给b
c=a
d=b
a[0]=11 #修改某元素的数据【注意 数据的类型】
a[1:3]=[22,33] #修改第一项到第三项的数据。顾头不顾尾
e=b is a
b=a.copy() #把a的值给b
a[0]=100
print(a)
print(b) print(id(a),id(b))

排序:

 import numpy as np
z=np.array([[100,0,3],[10,20,30]])
c=np.sort(z,axis=1) #对各维分别进行排序-升序。[[ 0 3 100] [ 10 20 30]]
print(c)
c=np.sort(z,axis=0) #对各列分别进行排序-升序 [[ 10 0 3] [100 20 30]]
c=np.argsort(z,axis=1) #返回 各维按升序排序所处的位置。[[1 2 0] [0 1 2]]
c=np.argsort(z,axis=0) #返回 各列按升序排序所处的位置。[[1 0 0] [0 1 1]]
a=[1,5,1,4,3,4,4]
b=[9,4,0,4,0,2,1]
c=np.lexsort((b,a))

s=q[:-1]   去掉最后一个数据

q = np.arange(36)

s = q.reshape(6,6) #更改数组形状,变成6行6列

s = q.reshape(6,3,2) #更改数组形状
#总的分层6块,每块3行2列

s = q.reshape(-1,3,2)  #更改数组形状
# -1表示不知-自动处理,每块3行2列

arr2[::2,::2]   #设置步长为2

e=np.any(s) == True #s数据表中只要有一个数据是True就返回True
e=np.all(s) == True #s数据表中所有数据都是True就返回True

矩阵NumPy的更多相关文章

  1. numpy矩阵

    一.创建矩阵 Numpy提供了ndarray来进行矩阵的操作,在Numpy中 矩阵继承于NumPy中的二维数组对象,但矩阵区别于数组,不可共用数组的运算规律. 1.mat("第0行:第1行: ...

  2. Numpy 用法小结

    1.  asarray 函数 可以将输入数据转化为矩阵格式. 输入数据可以是(列表,元组,列表的列表,元组的元组,元组的列表等这些数组形式). >>> asarray([(1,2,3 ...

  3. numpy库:常用基本

    numpy 本文主要列出numpy模块常用方法 大部分内容来源于网络,而后经过自己的一点思考和总结,如果有侵权,请联系我 我是一名初学者,有哪些地方有错误请留言,我会及时更改的 创建矩阵(采用ndar ...

  4. numpy库常用基本操作

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  5. Numpy 多维数组简介

     NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可以帮助程序员轻松地 ...

  6. Numpy 基础学习

    numpy.array() 功能:创建一个数据 vector = numpy.array([1,2,3,4]) matrix = numpy.array([1,2,3,4],[11,12,13,14] ...

  7. Numpy初步

    1,获取矩阵行列数 Import numpyasnp #创建二维的naaray对象 a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.shape)   #返 ...

  8. Python中的Numpy入门教程

    1.Numpy是什么 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过nu ...

  9. numpy 初识(一)

    基本操作: 读取文件(与pandas读取csv相似): import numpy numpy.genfromtxt("word.txt", delimiter=',', dtype ...

随机推荐

  1. rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构

    rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构 2017年10月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~ ...

  2. Freemarker空值判断

    freemarker中显示某对象使用${name}. 但如果name为null,freemarker就会报错.如果需要判断对象是否为空: <#if name??> …… </#if& ...

  3. Python面向对象静态方法,类方法,属性方法

    Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...

  4. BZOJ3786星系探索——非旋转treap(平衡树动态维护dfs序)

    题目描述 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球没有依赖星球. ...

  5. HDU-3746-KMP理解失配

    这个有点意思,要理解失配数组 题意是要计算出需要构造成循环节相连的最小个数 利用失配构造函数求出单个循环节,然后计算出需要的加上的珠子个数 #include <cstdio> #inclu ...

  6. Java中字符串string的数据类型

    Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...

  7. Mysql读写分离php脚本

    <?php/*php如何连接mysql*/ /*$link = mysql_connect(‘localhost‘, ‘root‘, ‘‘);if (!$link) {die(‘Could no ...

  8. 01 Zabbix采集数据方式

    Zabbix采集数据方式 1. zabbix采集数据方式: 基于专用agent   被监控的设备上面安装agent软件,这个agent必须在设备上面有采集数据的权限 基于SNMP,  net-snmp ...

  9. 自学工业控制网络之路1.4-典型的现场总线介绍CAN

    返回 自学工业控制网络之路 自学工业控制网络之路1.4-典型的现场总线介绍CAN 1991年3月,发布了CAN技术贵干v2.0,包含了A.B两部分.CAN2.0A给出报文标准格式,CAN2.0B给出了 ...

  10. 如何同时修改SharePoint帐号和AD帐号的密码 - 批量修改SharePoint Managed Account

    cls if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq ...