安装:  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. html 腳本

    腳本引入: <script type="text/script"> document.write("hello")</script> 腳 ...

  2. docker --swarm启动2375端口监听

    首先要下载swarm docker pull swarm 然后停掉docker服务: service docker stop 然后启动deamon: sudo dockerd -H tcp://0.0 ...

  3. BZOJ3522[Poi2014]Hotel——树形DP

    题目描述 有一个树形结构的宾馆,n个房间,n-1条无向边,每条边的长度相同,任意两个房间可以相互到达.吉丽要给他的三个妹子各开(一个)房(间).三个妹子住的房间要互不相同(否则要打起来了),为了让吉丽 ...

  4. John's trip POJ - 1041(这题数据有点水)

    题意: 其实还是一个欧拉回路,但要按字典序走路: 解析: 我真是蠢啊emm... map[i][j]表示由顶点i经街道j会到达的顶点编号 然后枚举j就好了 用栈储存.. 虽然我不是这样写的 #incl ...

  5. Sigma Function LightOJ - 1336 (约数和为奇数)

    题意: 求1-n中约数和为偶数的数的个数 记住一个定理:...平方数 及其 平方数的2倍 的约数和为奇数  then....减啦 证明: ....我jiao着人家写的很详细,so 看看人家写的吧! 转 ...

  6. Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. Python解惑:整数比较

    在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is.==和is操作的区别是: is比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对 ...

  8. 【AGC014E】Blue and Red Tree

    Description 给定一棵\(n\)个节点的蓝边树,再给定一棵\(n\)个节点的红边树.请通过若干次操作将蓝树变成红树.操作要求和过程如下: 1.选定一条边全为蓝色的路径: 2.将路径上的一条蓝 ...

  9. A1074. Reversing Linked List

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...

  10. 【洛谷P2746】Network of Schools

    题目大意:给定一个 N 个点,M 条边的有向图,第一问求至少从多少个点出发才能遍历整个有向图,第二问求至少在这个有向图的基础上加多少条边才能使得该无向图强连通. 题解:先进行 Tarjan 缩点,得到 ...