安装:  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

最新文章

  1. C++智能指针详解
  2. ThinkPHP真正疑难问题笔记
  3. P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题
  4. PISCES P4-vSwitch 安装以及一次失败的测试
  5. Java调优之jvm和线程的内存分析
  6. ios自定义View自动布局时计算大小
  7. TweenMax动画库学习(五)
  8. device tree website
  9. hdu 4691 最长的共同前缀 后缀数组 +lcp+rmq
  10. python笔记:#010#运算符
  11. less是什么?直接用css好还是less好
  12. ES6躬行记(18)——迭代器
  13. win10安装java
  14. iOS解决cell重用问题
  15. ORB-SLAM2(2) ROS下配置和编译
  16. POJ 2665
  17. Spark2 Linear Regression线性回归
  18. Memcached 简单利用和简单了解(Mac的安装和使用)
  19. XSS工具
  20. elasticsearch5.4体验

热门文章

  1. Mac 电脑 开发环境Idea环境搭建
  2. 一对一 只需将另一个表的id设置为主键和外键即可
  3. Python连接字符串用join还是+
  4. Uva1001-floyd算法-建图
  5. MT【4】坐标平移后齐次化
  6. Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
  7. 自学Python1.3-centos内python3并与python2共存
  8. 导出SharePoint2013用户及权限
  9. AtCoder Grand Contest 004 C - AND Grid
  10. 【POJ3635】Full Tank 优先队列BFS