• numpy基础篇-简单入门教程3


    • np
    import numpy as np
    
    • np.__version__
    print(np.__version__)  # 1.15.2
    
    • numpy.arange(start, stop, step, dtype),创建一维范围数组
    print(np.arange(10))                           # [0 1 2 3 4 5 6 7 8 9]
    print(np.arange(1, 5, 2))                      # [1 3]
    print(np.linspace(1, 10000, 4, dtype=int))     # 四个数的等差数列 [    1  3334  6667 10000]
    print(np.logspace(1,  4, num=4, dtype=float))  # 四个数的等比数列 [   10.   100.  1000. 10000.]
    
    • np.ones((2, 2), dtype=bool),创建布尔数组
    print(np.full((2, 2), True, dtype=bool))  # [[ True  True] [ True  True]]
    
    print(np.ones((2, 2), dtype=bool))        # [[ True  True] [ True  True]]
    
    print(np.full((2, 2), 3, dtype=float))    # [[3. 3.] [3. 3.]]
    
    
    • 提取所有的奇数
    arr = np.arange(10)
    
    a = arr[arr % 2 == 1]
    print(a)             # [1 3 5 7 9]
    
    • 所有的奇数赋值为-1
    arr[arr % 2 == 1] = -1
    print(arr)           # [ 0 -1  2 -1  4 -1  6 -1  8 -1]
    
    • 奇数赋值为 -1,其他数 +1
    arr = np.arange(10)
    out = np.where(arr % 2 == 1, -1, arr + 1)
    
    print(arr)          # [0  1  2  3  4  5  6  7  8  9]
    print(out)          # [1 -1  3 -1  5 -1  7 -1  9 -1]
    
    • np.concatenate([a, b], axis=0)或np.vstack([a, b]),垂直拼接两个数组
    a = np.arange(10).reshape(2, 5)
    b = np.repeat(1, 10).reshape(2, -1)  # automatically decides the number of cols
    print(a)                             # [[0 1 2 3 4] [5 6 7 8 9]]
    print(b)                             # [[1 1 1 1 1] [1 1 1 1 1]]
    print(type(a))                       # <class 'numpy.ndarray'>
    
    print(np.concatenate([a, b], axis=0))  # [[0 1 2 3 4] [5 6 7 8 9] [1 1 1 1 1] [1 1 1 1 1]]
    print(np.vstack([a, b]))               # same
    print(np.r_[a, b])                     # same
    
    • np.concatenate([a, b], axis=1)或np.hstack([a, b]),水平拼接两个数组
    print(np.concatenate([a, b], axis=1))  # [[0 1 2 3 4 1 1 1 1 1] [5 6 7 8 9 1 1 1 1 1]]
    print(np.hstack([a, b]))               # same
    print(np.c_[a, b])                     # same
    
    • np.repeat(a, 3),np.tile(a, 3),重复序列的两种方式
    a = np.array([1, 2, 3])
    
    print(np.repeat(a, 3))                 # [1 1 1 2 2 2 3 3 3]
    
    print(np.tile(a, 3))                   # [1 2 3 1 2 3 1 2 3]
    
    print(np.r_[np.repeat(a, 3), np.tile(a, 3)])  # 水平拼接 [1 1 1 2 2 2 3 3 3 1 2 3 1 2 3 1 2 3]
    
    • np.intersect1d(a, b)获取共有项,np.setdiff1d(a, b)获取a独有项
    a = np.array([1, 2, 3, 6])
    b = np.array([1, 2, 8, 9])
    
    print(np.intersect1d(a, b))  # [1 2]
    
    print(np.setdiff1d(a, b))    # [3 6]
    
    • np.where(a == b)获取元素匹配的位置,相同位置元素相同成为匹配
    print(a == b)  # [ True  True False False]
    print(np.where(a == b))      # (array([0, 1]),)
    
    • np.where((a >= 5) & (a <= 7))提取给定范围的数字
    a = np.arange(3, 10)
    b = a[(a >= 5) & (a <= 7)]
    
    print((a >= 5) & (a <= 7))         # [False False  True  True  True False False]
    print(np.logical_and(a>=5, a<=7))  # [False False  True  True  True False False]
    print(b)                           # [5 6 7]
    
    index1 = np.where((a >= 5) & (a <= 7))
    index2 = np.where(np.logical_and(a>=5, a<=7))  # 两种方法的效果相同
    
    print(a[index1])      # [5 6 7]
    print(a[index2])      # [5 6 7]
    
    • np.vectorize(max),使用(自定义)函数处理数组,提取每一列的最大值
    print(max(5, 6))   # 6
    
    a = np.array([1, 2, 3])
    b = np.array([2, 1, 3])
    
    pair_max = np.vectorize(max, otypes=[float])  # 提取每一列的最大值
    
    print(pair_max(a, b))  # [2 2 3]
    
    • arr[:, [1, 0, 2]],交换二维数组的两列,理解为列的复制粘贴
    arr = np.arange(9).reshape(3, 3)
    
    print(arr[:, [1, 0, 2]])
    # [[1 0 2]
    #  [4 3 5]
    #  [7 6 8]]
    
    • arr[[1, 0, 2], :],交换二维数组的两行
    print(arr[[1, 0, 2], :])
    # [[3 4 5]
    #  [0 1 2]
    #  [6 7 8]]
    
    • arr[:: -1, :],反转二维数组的行
    print(arr[::-1])
    # [[6 7 8]
    #  [3 4 5]
    #  [0 1 2]]
    print(arr[:: -1, :])
    # [[6 7 8]
    #  [3 4 5]
    #  [0 1 2]]
    
    • arr[:, ::-1],反转二维数组的列
    print(arr[:, ::-1])
    # [[2 1 0]
    #  [5 4 3]
    #  [8 7 6]]
    

    END

  • 相关阅读:
    关于基于.net的WEB程序开发所需要的一些技术归纳
    技术的学习方法探索之一
    生活,就是让程序为人们服务!
    js滑动提示效果
    radio判断是否为空
    JS清除网页历史记录,屏蔽后退按钮
    多表查询存储过程
    IP地址转化为数字,charindex ,SUBSTRING
    c# byte转化为string
    获得IP地址中文
  • 原文地址:https://www.cnblogs.com/yangzhaonan/p/10428470.html
Copyright © 2020-2023  润新知