安装:  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. WPF将数据库和GridView绑定并更改GridView模板

    首先来看一下如何使用GridView,在前台的话代码如下:这里仅仅举出一个例子,GridView是作为子项嵌套在ListView中的,这里的数据源是通过绑定的方式来绑定到GridView中的. < ...

  2. 【转】SpringMVC,获取request的几种方法,及线程安全性

    作者丨编程迷思 https://www.cnblogs.com/kismetv/p/8757260.html 概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对 ...

  3. python 模块之-configparser

    python 模块configparser   配置文件模块 import configparser    config = configparser.ConfigParser() config[&q ...

  4. day22 collection 模块 (顺便对比queue也学习了一下队列)

    collection 定义命名元祖,让元祖的每个元素可以通过类似对象属性的方法用".属性"及其方便的取值. 定义可前后拿取值且可迭代的双端队列 定义有顺序的字典 定义有默认值的字典 ...

  5. 04 自学Aruba之定制AC的protal认证登陆页面

    点击返回:自学Aruba之路 04 自学Aruba之定制AC的protal认证登陆页面 方法一: 使用Aruba控制器中内置的网页界面 Configuration下MANAGEMENT>Capt ...

  6. Android 安装 卸载 更新 程序

    安装程序的方法: .通过Intent机制,调出系统安装应用,重新安装应用的话,会保留原应用的数据. 1. String fileName =Environment.getExternalStorage ...

  7. 【CF961G】Partitions(第二类斯特林数)

    [CF961G]Partitions(第二类斯特林数) 题面 CodeForces 洛谷 题解 考虑每个数的贡献,显然每个数前面贡献的系数都是一样的. 枚举当前数所在的集合大小,所以前面的系数\(p\ ...

  8. shell(2)-&& 与 || 逻辑或与非

    test 命令测试 -常见的测试类型–测试文件状态–字符串比较–整数值比较–逻辑测试&& 如果是“前面”(真),则“后面”[ -f /var/run/dhcpd.pid ] & ...

  9. JavaScript的面向对象原理之原型链详解

    一.引言 在16年的10月份,在校内双选会找前端实习的时候,hr问了一个问题:JavaScript的面向对象理解吗?我张口就说“JavaScript是基于原型的!”.然后就没什么好说的了,hr可能不知 ...

  10. 面试 -- Http协议相关(转载)

    http请求由三部分组成,分别是:请求行.消息报头.请求正文 HTTP(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接 ...