zoukankan      html  css  js  c++  java
  • 《利用python进行数据分析》之numpy

     

    在NumPy中使用numpy.string_类型作字符串数据时要小心,因为numpy会修正它的大小或删除输入而不发出警告。

    numpy数组的切片是原数组的视图,对视图的修改会反映到原数组,想要拷贝时需要显示复制ndarray[:].copy()。区别于使用布尔值索引时,总是生成数据的拷贝

    切片里只有一个冒号时切出来的数据是一维的,arr[2,:]

    In [1]:
    import numpy as np
    from functools import partial
    println = partial(print,sep="
    "+"*"*50+"
    ")
    
    In [2]:
    arr = np.random.randn(7) * 5
    remainder, whole_part = np.modf(arr)
    println(arr,remainder,whole_part)
    
     
    [ 3.43229669 -5.86140048 -6.59627105 -3.89258116 -0.2048788   1.86099143
     -9.50394027]
    **************************************************
    [ 0.43229669 -0.86140048 -0.59627105 -0.89258116 -0.2048788   0.86099143
     -0.50394027]
    **************************************************
    [ 3. -5. -6. -3. -0.  1. -9.]
    
    In [3]:
    #where 语句
    
    arr = np.random.randn(4,4)
    result = np.where(arr>0,2,arr)
    println(arr,result)
    
     
    [[-0.34360613 -0.00900969  0.51009993  2.42392996]
     [-1.10378649  0.76299971  1.7754222  -0.63318608]
     [ 0.73008744  0.45350325  0.24415811  1.48311092]
     [ 0.78689937  1.07869427  1.72881987  0.00863349]]
    **************************************************
    [[-0.34360613 -0.00900969  2.          2.        ]
     [-1.10378649  2.          2.         -0.63318608]
     [ 2.          2.          2.          2.        ]
     [ 2.          2.          2.          2.        ]]
    
    In [4]:
    #布尔值数组
    
    arr = np.random.randn(100)
    #第一个打印值是数组大于零的值的和,第二个打印值是大于零的个数,arr>0得出的是布尔数组
    println(arr[arr>0].sum(),(arr>0).sum())
    
     
    34.14799260621775
    **************************************************
    48
    
    In [5]:
    println((arr>0).any(),(arr>0).all())
    
     
    True
    **************************************************
    False
    
    In [6]:
    #模拟随机漫步
    
    nwalks = 5000 #样本数
    nsteps = 1000
    draws = np.random.randint(0,2,size=(nwalks,nsteps)) #0或1
    steps = np.where(draws>0,1,-1) #1或-1
    walks = steps.cumsum(1) #步数相加
    print(walks)
    
     
    [[  1   2   1 ... -10 -11 -12]
     [ -1  -2  -1 ...  26  27  26]
     [ -1   0   1 ...   4   3   4]
     ...
     [ -1  -2  -1 ...   2   3   4]
     [ -1  -2  -1 ... -14 -15 -16]
     [  1   2   1 ...   4   5   6]]
    
    In [7]:
    #想算出走到30或-30的时间,先把未走到的样本剔除
    index_hit30 = (np.abs(walks)>=30).any(1)
    hit30 = walks[index_hit30]
    
    #第一次走到30或-30的时间
    hit30_time = (np.abs(hit30)>=30).argmax(1)
    println(index_hit30,hit30_time.mean())
    
     
    [False  True  True ... False  True False]
    **************************************************
    501.0872403560831
    
    In [2]:
    #最值及排序
    
    data = np.sin(np.arange(20).reshape(4,-1))
    max_index = np.argmax(data,axis=0)
    println(data,max_index,data[max_index,range(data.shape[1])])
    
     
    [[ 0.          0.84147098  0.90929743  0.14112001 -0.7568025 ]
     [-0.95892427 -0.2794155   0.6569866   0.98935825  0.41211849]
     [-0.54402111 -0.99999021 -0.53657292  0.42016704  0.99060736]
     [ 0.65028784 -0.28790332 -0.96139749 -0.75098725  0.14987721]]
    **************************************************
    [3 0 0 1 2]
    **************************************************
    [0.65028784 0.84147098 0.90929743 0.98935825 0.99060736]
    
    In [4]:
    sort_index = np.argsort(data[0])
    sort_index
    
    Out[4]:
    array([4, 0, 3, 1, 2])
    In [5]:
    data[0,sort_index]
    
    Out[5]:
    array([-0.7568025 ,  0.        ,  0.14112001,  0.84147098,  0.90929743])
  • 相关阅读:
    django-orm基础字段及选项1
    django-模型层
    django-应用及分布式路由
    django-static配置静态文件
    django-url反向解析
    django-url路径书写规范
    django-模板继承 block、endblock、 extend
    详解HTML中的表单元素
    详解HTML中的表格标签
    jQuery和AJAX基础
  • 原文地址:https://www.cnblogs.com/FinnChan/p/11604893.html
Copyright © 2011-2022 走看看