zoukankan      html  css  js  c++  java
  • Numpy使用

    Numpy使用

    import numpy as np
    

    生成numpy数组

    #生成长度为5的从0-4的数组
    np.arange(5) 
    
    #生成为4行5列的0-19的数组
    np.arnage(20).reshape((4,5)) 
    
    #生成参数的数组
    np.array([[1,2],[3,4]]) 
    
    #生成3行4列的全0
    print(np.zeros((3,4)))  
    
    #生成3行4列的全1
    print(np.ones((3,4)))   
    
    #生成3行3列的对角线为1
    print(np.eye((3)))     
    
    #生成2行3列的数组 (0-1)
    print(np.random.rand(2,3)) 
    
    #生成2行3列的数组 符合标准正太分布
    print(np.random.randn(2,3)) 
    
    #生成(0-100)的10行10列的数组
    print(np.random.randint(0,100,(10,10))) 
    
    #使用随机种子,每次生成的数组都一样
    np.random.seed(10)
    print(np.random.randint(0,100,(3,2)))  
    

    数组shape

    a=np.arnage(20).reshape((4,5))
    #查看数组的shape
    print(a.shape)
    
    #更新数组的shape
    a.reshape((5,4))
    
    #将数组打散,转换为一行
    a.flatten()
    
    

    数组的运算

    数组对应位置进行运算

    a=np.arange(20).reshape((4,5))
    
    print(a+2)
    print(a-12)
    print(a*2)
    print(a/0)
    

    numpy数据类型

    #生成数据类型为float
    a=np.array([random.random() for i in range(10)],dtype="float")
    
    #数组元素保留两位小数
    print(np.round(a,2))
    
    #将数组类型转化为int
    b=a.astype(int)
    

    保留两位小数

    numpy存取本地文件

    读取:

    #delimiter默认是" ",skiprows是跳过的行,默认为1
    a=np.loadtxt("data.csv",delimiter=",",dtype="float",skiprows=0)
    

    存储:

    #delimiter默认是' ',fmt是保存数据格式
    np.savetxt("data2.csv",b,fmt="%1.4e")
    np.savetxt("data2.csv",b,fmt="%.f")
    

    其中%.f可以谢伟·%10.10f意思为整数部分10位,小数部分10位

    numpy的数据转置

    a=np.arange(20).reshape(4,5)
    b=a.transpose()
    print(b)
    
    print(a.T)
    
    #交换0,1轴
    print(a.swapaxes(1,0))
    

    numpy的索引和切片

    取一行

    a=np.arange(20).reshape(4,5)
    print(a[0])
    

    取一列

    a=np.arange(20).reshape(4,5)
    print(a[:,0)
    

    取多行

    a=np.arange(20).reshape(4,5)
    print(a[1:3])
    

    取多列

    a=np.arange(20).reshape(4,5)
    print(a[:,1:3])
    

    取不连续的多行

    a=np.arange(20).reshape(4,5)
    print(a[[0,2]])
    

    取不连续的多列

    a=np.arange(20).reshape(4,5)python
    print(a[:,[0,2]])
    

    取第1行,第2列的值

    a=np.arange(20).reshape(4,5)
    print(a[1,2])
    

    取多行和多列(取交叉点),取第1行到第3行,第1列到第4列的结果

    a=np.arange(20).reshape(4,5)
    print(a[0:3,1:4])
    

    取多个不相临的点

    a=np.arange(20).reshape(4,5)
    print(a[[0,2],[0,1]])
    

    取的是列表对应位置的点(0,0)(2,1)

    numpy中数值的修改

    a=np.arange(20).reshape(4,5)
    a[[0,2],[0,1]]=0
    print(a)
    

    取a中小于5的值

    a=np.arange(20).reshape(4,5)
    print(a[a<5])
    

    将a中小于5的赋值为3

    a=np.arange(20).reshape(4,5)
    a[a<5]=3
    print(a)
    

    将a中小于3的数字替换为0,把大于3的替换为6(三目运算符)

    a=np.arange(20).reshape(4,5)
    print(np.where(a<3,0,6))
    

    将a中小于3的数字替换为3,把大于6的替换为6

    a=np.arange(20).reshape(4,5)
    print(a.clip(3,6))
    

    numpy的数组拼接

    竖直拼接时候:每一列代表的意义相同,否则牛头不对马嘴

    a=np.array([[1,2],[3,4]])
    b=np.array([[5,6],[7,8]])
    
    # 竖直拼接 vertically
    c=np.vstack((a,b))
    
    # 水平拼接 horizontally
    d=np.hstack((a,b))
    
    print(c)
    print(d)
    

    行交换

    t[[1,2],:]=t[[2,1],:]
    

    列交换

    t[:,[1,2]]=t[:,[2,1]]
    
    a=np.arange(20).reshape((4,5))
    b=np.arange(20,40).reshape(4,5)
    
    print(a+b)
    print(a-b)
    print(a*b)
    print(a/b)
    

    numpy的常见方法

    print(np.max(a))		#全局最大
    print(np.max(a,axis=0))	#每列最大
    print(np.max(a,axis=1))	#每行最大
    
    print(np.argmax(t,axis=0))   #每列最大的坐标
    print(np.argmax(t,axis=1))   #每行最大的坐标
    

    numpy的复制操作

    numpy的nan和inf

    numpy中常用的统计函数

    numpy中将nan赋值为平均值操作

  • 相关阅读:
    Javascript构造函数的继承
    什么数据库能抗住《王者荣耀》的1亿DAU?
    支持微信支付亿级请求的TBase数据库大揭秘
    我在MySQL的那些年(一)
    谁是银行核心数据库的破局者?
    X侦探所事件薄 | 一次内存溢出之谜
    腾讯云数据库新生代产品获国家级认证
    POJ 2594 传递闭包的最小路径覆盖
    POJ 1719 二分图最大匹配(记录路径)
    HDU 1533 KM算法(权值最小的最佳匹配)
  • 原文地址:https://www.cnblogs.com/jimlau/p/13278878.html
Copyright © 2011-2022 走看看