美文网首页我爱编程
【dataquest学习】numpy

【dataquest学习】numpy

作者: dechuan | 来源:发表于2017-05-18 10:00 被阅读0次
    import numpy
    nfl = numpy.genfromtxt("nfl.csv", delimiter=",")
    

    得到numpy.ndarray类型
    但这样的读法有个问题,numpy会试图将strings转为floats,转不过来会变成nan。为了让读出的数据是string格式,加上参数dtype="U75"。

    import numpy as np
    import numpy
    world_alcohol = numpy.genfromtxt("world_alcohol.csv",dtype="U75",skip_header=1,delimiter=",")
    print(world_alcohol)
    

    axis=0/1如何选择如下:

    • 1 means that we want to perform the operation on each row
    • 0 means on each column.
    matrix = numpy.array([
                    [5, 10, 15], 
                    [20, 25, 30],
                    [35, 40, 45]
                 ])
        matrix.sum(axis=1)
    

    得到:[30, 75, 120]

    总结:
    1、numpy是什么?

    • numpy库核心是提供了一种多维数组对象叫ndarray。
    • 矩阵matrix是numpy的特例,一个二维数组。
    • arr=np.array(data),得到ndarray型arr

    2、numpy最大的劣势是什么?

    • 数组中每个元素必须是相同的数据格式,都是string/float...
    • 行和列必须用数字引用,没有行头/列头的概念

    3、numpy使用功能有哪些?

    • 轻松转化元素的格式:如arr=arr.astype(float64)
    • 不用编写循环,批量执行数组对应元素的操作,如arr*arr,arr-arr
    • 各种索引和切片,当然任何修改会直接反映到源数据
      A. 数字切片
      第一个是行,第二个是列,如arr[1,:2]
      B. 布尔型索引
      如is_year=(arr[:,0]=='1990');arr[is_year,:]得到1990年对应的行
    matrix = np.array([[5, 10, 15], 
                    [20, 25, 30],
                    [35, 40, 45]])
    second_column_25 = (matrix[:,1] == 25)
    print(second_column_25,matrix[second_column_25,:])
    

    C. 花式索引:利用整数数组进行索引

    arr=np.arange(32).reshape((8,4))
    arr
    
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15],
           [16, 17, 18, 19],
           [20, 21, 22, 23],
           [24, 25, 26, 27],
           [28, 29, 30, 31]])
    
    arr[[1,5,7,2],[0,3,1,2]]
    
    array([ 4, 23, 29, 10])
    
    arr[[1,5,7,2]]
    
    array([[ 4,  5,  6,  7],
           [20, 21, 22, 23],
           [28, 29, 30, 31],
           [ 8,  9, 10, 11]])
    
    arr[[1,5,7,2]][:,[0,3,1,2]]
    
    array([[ 4,  7,  5,  6],
           [20, 23, 21, 22],
           [28, 31, 29, 30],
           [ 8, 11,  9, 10]])
    
    arr[np.ix_([1,5,7,2],[0,3,1,2])]
    
    array([[ 4,  7,  5,  6],
           [20, 23, 21, 22],
           [28, 31, 29, 30],
           [ 8, 11,  9, 10]])
    
    • numpy提供了各类函数,如abs,sqrt,dot,transpose,where,unique,cumsum,cumprod
    arr=np.arange(3)
    print(arr)
    np.where(arr>0,2,-2)
    
    [0 1 2]
    array([-2,  2,  2])
    

    相关文章

      网友评论

        本文标题:【dataquest学习】numpy

        本文链接:https://www.haomeiwen.com/subject/xftsxxtx.html