zoukankan      html  css  js  c++  java
  • Python之numpy基本指令

    https://blog.csdn.net/mmm305658979/article/details/78745637

    # -*- coding: utf-8 -*- 多加练习才是真

    import numpy as np
    from numpy import newaxis
    from numpy import pi
    import matplotlib.pyplot as plt
    from numpy import ogrid

    #生成数组(矩阵)
    #a = np.array([[1,2,3],[4,5,6]]) #2*3

    #a = np.array([1,2,3]) #3*1

    #a = np.ones(16,1); a = np.cumsum(a) #生成16*1矩阵,然后累加得到递增值为1-16的矩阵,作用同下

    #a = np.arange(15).reshape(3,5) #生成0开始递增的15个数,然后分成3行5列矩阵
    #a = np.arange(24).reshape(2,3,4) #生成2*3*4 3维数组
    #np.set_printoptions(threshold='nan') #矩阵元素数量过多会自动省略显示,它可以取消省略显示
    #c = np.array([1,2,3])
    #c = np.arange(10,100,4) #10,14,18.....98;小数间隔也可
    #c = np.linspace(0,2,9) #生成0-2等间隔的9个数
    #c = np.ogrid[-100:100:3] #生成-100 - 100等间隔三个数
    #c = np.zeros((4,4)) #生成4*4全0矩阵
    #c = np.ones((4,4),dtype=float) #生成4*4全1矩阵,浮点型
    #c = np.eye(2) #生成单位矩阵[[1,0],[0,1]]
    #c = np.empty((2,3)) #随机数,不太懂
    #c = np.random.random((2,3)) # √生成随机数矩阵,float
    #c = np.random.noral(mu,sigma,1000) #生成位置参数和尺寸参数确定的1000个数据
    #矩阵的操作

    #print(np.sin(1))

    #a = np.ravel(a) # (51,1)的array可以变为(51,)

    #np.mat(a) #将a变为矩阵

    #b = np.floor(a) #矩阵a中没个元素去掉小数点后的数并保存为float格式
    #print(a.ndim) #指的是二维矩阵即m*n的矩阵(数组),亦称为秩(rank)
    #np.trace(a) #矩阵的迹,对角线上数之和
    #print(a.size) #矩阵所包含元素个数
    #print(a.shape) #矩阵所包含元素形状如(3,4)
    #print(a.reshape(2,-1)) #变形为2行,列数自动计算,a本身不变
    #a.resize(16,1) #a本身变形为16行1列,等于a.shape=16,-1
    #print(a.T) #矩阵的转置,1维向量并且没加入newaxis时失效
    #np.linalg.inv(a) #矩阵的逆矩阵,a*a-1 = 1
    #print(a.data) #实际数组元素的缓冲区
    #a = np.array([[1,0],[2,3]])
    #b = np.array([[2,4],[1,5]])
    #c = a*b #a和b对应位置相乘,与matlab中相反
    #c = a.dot(b) #等同于c = np.dot(a,b),倆矩阵相乘
    #a*=b,a+=b,a-=b #这种运算a,b必须同为整型或浮点型,而a+b(np.add(a,b))则可以int+float
    #np.sum([[0, 1], [0, 5]], axis=1) #横着加
    #c = a + b #a(4*1),b(1*4) c(4*4)
    #c = np.exp(1) #返回e(2.718)的a次方
    #c = a**2 #a的平方
    #c = a.sum(axis = 0 or 1) or a.max() or a.min #矩阵(0对应每列之和,1对应每行之和)的和,最大值与最小值
    #c = a.argmax(axis=0) #返回矩阵每列最大值对应索引号
    #a = np.arange(10)
    #a[0:6:2] = 100 #0,2,4位置数变成100
    #np.sort(a, axis = '-1', kind = 'quicksort') #排序,axis为对第几行排序
    #print(a[::-1]) #逆序排列
    #print(np.all([[True, False], [True, True]])) #与,返回False
    #print(np.any([[True, False], [True, True]])) #或
    #ax,bx,cx = np.ix_(a,b,c)  #把a,b,c一维向量变成(x,1,1)(1,x,1)(1,1,x)维度方便他们相乘等


    #def f(x,y):
    #    return x+y
    #a = np.fromfunction(f,(3,4)) #生成3*4矩阵,每个位置值由x和y计算后得到
    #a[:,1:3] #返回矩阵a所有行,第2和3列


    #矩阵的合并拆分
    #print(a[-1]) #返回a最后一行,等于a[-1,:]
    #b = [row for row in a] #row表示每一行,迭代输出每一行
    #b = [element for element in a.flat] #遍历输出矩阵每一个元素,类似b = a.ravel()
    #c = np.vstack((a,b)) #竖向合并a,b,等于np.row_stack((a,b))
    #c = np.hstack((a,b)) #横向合并a,b,等于np.column_stack((a,b))
    #c = np.hsplit(a,4) #矩阵a分成四等分1(列)|2|3|4
    #c = np.vsplit(a,4) #矩阵a分成四等分1(行)/2(行)/3/4
    #c = np.hsplit(a,(1,3)) #矩阵a的第2行和第三行一起被分出来


    #newaxis对比(非1维矩阵(n*1)无需用,1维需用不然转置合并等都会错误)
    #a = np.array([1,2,3])
    #b = np.array([[4,5,6]])
    #print(a,b)
    #c = a[:,newaxis]
    #d = b[:,newaxis]
    #print(c,d)
    #e = np.hstack((a,b))
    #g = np.hstack((c,d))
    #print(e,g)


    #r_与c_ 向量连接
    #print(np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]) #r_用于连接行向量
    #print(np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]) #c_用于连接纵向量


    #深浅拷贝
    #b = a #b变化a跟着变化,简单赋值并没有复制数组。 b is a √
    #b = a.view() or a[:] #浅拷贝,b和a共享共同的值但是可以有不同的形状。 b is a ×,b.base is a √ 
    #b = a.copy() #深拷贝,b和a互相独立。b is a ×,b.base is a ×


    #数据的保存和读取
    #np.save("a.npy", a) #括号内首先确定保存的文件名,再确认要保存的数据(单个)
    #c = np.load( "a.npy" ) #读取数据
    #np.savetxt("a.txt", a) #只能保存一个数组
    #np.loadtxt("a.txt")

    #np.savez("biubiu.npz",a,b,c)

    #r = np.load("biubiu.npz") #读入时变量列表看不到,输入r["arr_0"]返回a,也可以import导入文件


    #矩阵元素的查找
    #np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]) #二分查找输出-10等应该插入的位置
    #b=np.nonzero(a) #矩阵非0元素位置,二维矩阵a则返回两个向量对应横纵坐标
    #b=np.where(a>5) #矩阵中大于5的元素的位置
    #a = np.array([1,2,3,4])
    #b = np.array([True,False,True,False])
    #print(a[b])
    #print(a[a>2])

    --------------------- 作者:黑山白雪m 来源:CSDN 原文:https://blog.csdn.net/mmm305658979/article/details/78745637?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    toj 2975 Encription
    poj 1797 Heavy Transportation
    toj 2971 Rotating Numbers
    zoj 2281 Way to Freedom
    toj 2483 Nasty Hacks
    toj 2972 MOVING DHAKA
    toj 2696 Collecting Beepers
    toj 2970 Hackle Number
    toj 2485 Card Tric
    js页面定位,相关几个属性
  • 原文地址:https://www.cnblogs.com/fengff/p/9772394.html
Copyright © 2011-2022 走看看