zoukankan      html  css  js  c++  java
  • numpy 学习

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import numpy
    import numpy as np
    """
    iris = numpy.genfromtxt("iris.data.csv",delimiter=',',dtype=str,skip_header=1)
    print(type(iris))
    print(iris)
    #print(help(numpy.genfromtxt))
    #数组
    vector = numpy.array([5,10,15,20])
    matrix = numpy.array([[5, 3, 2],[3, 7, 8],[2,5,8]])
    print(vector.shape)  #shape:了解数组的结构
    print(matrix.shape)
    print(vector.dtype)
    #取出某个值
    arr1 = iris[2,3]
    arr2 = iris[2,2]
    print(arr1)
    print(arr2)
    print(vector[0:3])
    print(matrix[:,1])
    print(matrix[:,0:2])
    #判断数值是否相等,以及输出布尔值
    print(matrix == 8)
    print(vector == 10)          #输出布尔值
    print(vector[vector == 10])  #返回值为10
    print(matrix[:,1]==7)
    print(matrix[matrix[:,1]==7])#输出等于7的那一行
    #判断与或
    equal_to_ten_and_five = (vector == 10)&(vector ==5)
    equal_to_ten_or_five = (vector == 10)|(vector ==5)
    print(equal_to_ten_and_five)
    print(equal_to_ten_or_five)
    #改变类型值
    ar1 = numpy.array(['1','2','3'])
    print(ar1.dtype)
    print(ar1)
    ar1 = ar1.astype(float)
    print(ar1.dtype)
    print(ar1)
    #求和
    print(matrix.sum(axis=1))    #维度为1按行相加
    print(matrix.sum(axis=0))    #维度为0按列相加
    
    print(np.arange(15))         #15个值
    a = np.arange(15).reshape(3,5)  #reshape:3行,5列
    print(a)
    print(a.ndim)                #2维矩阵
    a1 = np.zeros((3,4))         #3行4列的矩阵,全为0
    print(a1)
    a2 = np.ones((2,3,4),dtype=np.int32)  #全为1的矩阵
    print(a2)
    a3 = np.arange(10,30,5)      #数组从10到30,等差数组,差为5
    print(a3)
    a4 = np.random.random((2,3)) #2行3列的随机数组
    print(a4)
    from numpy import pi
    print(np.linspace(0,2*pi,100)) #在0到2pi上区100个数,这些数是平均取出的
    #一些数学运算
    a = np.array([20,30,40,50])
    b = np.arange(4)
    print(a - b)  #对应的地方相减
    print(b**2)
    print(a<35)  #输出布尔值
    print(a*b)   #对应位置相乘
    a = np.array([[1,2],[2,3]])
    b = np.array([[1,0],[0,3]])
    print(a*b)
    print(a.dot(b))   #.dot是矩阵间相乘
    print(np.hstack((a,b))) #横着拼接
    print(np.vstack((a,b))) #竖着拼接
    print(np.hsplit(a,2))   #切分成2个 hsplit(a,(3,4)):在3和4处分别切一刀
    #矩阵的一些操作
    m= np.random.random((3,4))
    print(m)
    ma = np.floor(10*np.random.random((3,4))) #  随机取数,然后乘以0,floor:向下取整
    print(ma)
    print(ma.ravel()) #矩阵拉成向量
    ma.shape = (6,2)
    #print(ma)
    print(ma.T)    #矩阵转置
    
    #关于复制
    a = np.arange(12)
    b=a           #a和b的值是一样的,改变a,b也会变,反过来也是,这两个值的id也是一样的
    print(b is a)#True
    b.shape = 3,4
    print(a.shape)
    print(id(a))
    print(id(b))
    
    c = a.view()  #浅复制
    print(c is a) #False
    c.shape = 2,6
    print(a.shape)
    c[0,4] = 1234
    print(a)     #改变了c之后,a也发生了变化,二者的id不同,但是指向的不同的东西是共用的值
    print(id(a))
    print(id(c))
    d = a.copy()  #二者的值是不一样的,指向的也不同
    d[0,0] = 233
    print(a)
    #排序和索引
    data = np.sin(np.arange(20)).reshape(5,4)
    print(data)
    ind = data.argmax(axis=0)  #axis=0:按列运算,找出最大值,输出索引,即那一列
    print(ind)
    data_max = data[ind,range(data.shape[1])]#按照索引,输出这些值
    print(data_max)
    e = np.arange(0,30,10)
    print(e)
    f = np.tile(e,(2,2))  #变成2X2的,行和列扩展了2倍
    print(f)
    g = np.array([[4,3,5,2],[1,2,1,3]])
    print(g)
    h = np.sort(g,axis=1)   #按行排序
    print(g)
    """
    print('______________')
    x = np.array([5,3,7,1,4])
    y = np.argsort(x)  #s索引排序
    print(y)
    print(x[y])   #TypeError:只有整数标量数组可以转换为标量索引,
    

      

  • 相关阅读:
    requests 发送请求时 保持 headers 的顺序
    python邮件测试时遇到的 u202aF和 u202a 问题
    nexus 5x 刷机指北
    idea 添加自定义模板
    ast入门 (二)
    Django 路由校验
    无法远程连接 VMware
    ubuntu安装TRex
    eclipse 创建 springboot 项目时 报json 错误
    @RestController注解下返回到jsp视图页面
  • 原文地址:https://www.cnblogs.com/lifengwu/p/9814682.html
Copyright © 2011-2022 走看看