• 2-1 Numpy-数组



    (1) 数组的创建
      1 # !usr/bin/env python
      2 # Author:@vilicute
      3 import numpy as np
      4 # 1、用array创建数组并查看数组的属性
      5 arr1 = np.array([1, 2, 3, 4])  # 一维数组
      6 print("一维数组创建:arr1 = ", arr1)
      7 arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])  # 二维数组
      8 print("
    二维数组创建:arr2 = 
    ", arr2)
      9 # 数组属性
     10 print("数组维数:", arr2.ndim)
     11 print("数组维度:", arr2.shape)
     12 print("数组类型:", arr2.dtype)
     13 print("元素个数:", arr2.size)
     14 print("元素大小:", arr2.itemsize)
     15 arr2.shape = 4, 3  # 重新设置维度属性
     16 print("
    重置维度后的数组为:arr2_reshape = 
    ", arr2)
     17 '''
     18 一维数组创建:arr1 =  [1 2 3 4]
     19 二维数组创建:arr2 = 
     20  [[ 1  2  3  4]
     21  [ 5  6  7  8]
     22  [ 9 10 11 12]]
     23 数组维数: 2
     24 数组维度: (3, 4)
     25 数组类型: int32
     26 元素个数: 12
     27 元素大小: 4
     28 重置维度后的数组为:arr2_reshape = 
     29  [[ 1  2  3]
     30  [ 4  5  6]
     31  [ 7  8  9]
     32  [10 11 12]]
     33  '''
     34  
     35 # 2、用arange创建数组
     36 arr3 = np.arange(0, 1, 0.1)  # (初值,终值,间隔)  左闭右开
     37 print("
    等差数组:arr3 = ", arr3)
     38 '''
     39 等差数组:arr3 =  [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
     40 '''
     41 # 3、用linspace创建数组
     42 arr4 = np.linspace(0, 1, 4)  # (初值,终值,个数)  等差数列
     43 print("
    特殊等差数组:arr4 = ", arr4)
     44 '''
     45 特殊等差数组:arr4 =  [0.         0.33333333 0.66666667 1.        ]
     46 '''
     47 # 4、用logspace创建数组
     48 arr5 = np.logspace(0, 2, 4)  # (10^0,10^2,个数)  等比数列
     49 print("
    10^等比数组:arr5 = ", arr5)
     50 '''
     51 10^等比数组:arr5 =  [  1.           4.64158883  21.5443469  100.        ]
     52 '''
     53 # 5、用zeros创建数组
     54 arr6 = np.zeros((3, 3))  # (a,b) 维数
     55 print("
    全0数组:arr6 = 
    ", arr6)
     56 '''
     57 全0数组:arr6 = 
     58  [[0. 0. 0.]
     59   [0. 0. 0.]
     60   [0. 0. 0.]]
     61 '''
     62 # 6、用eye创建数组
     63 arr7 = np.eye(3)  # 类似于单位矩阵
     64 print("
    单位对角数组:arr7 = 
    ", arr7)
     65 '''
     66 单位对角数组:arr7 = 
     67  [[1. 0. 0.]
     68   [0. 1. 0.]
     69   [0. 0. 1.]]
     70 '''
     71 # 7、用diag创建数组
     72 arr8 = np.diag([1, 2, 3, 4])  # [a,b,c,d] 对角元素
     73 print("
    对角数组:arr8 = 
    ", arr8)
     74 '''
     75 对角数组:arr8 = 
     76  [[1 0 0 0]
     77   [0 2 0 0]
     78   [0 0 3 0]
     79   [0 0 0 4]]
     80 '''
     81 # 8、用ones创建数组
     82 arr9 = np.ones((4, 3))  # (a,b) 维数
     83 print("
    单位数组:arr9 = 
    ", arr9)
     84 '''
     85 单位数组:arr9 = 
     86  [[1. 1. 1.]
     87   [1. 1. 1.]
     88   [1. 1. 1.]
     89   [1. 1. 1.]]
     90 '''
     91 # 9、自定义数据数组创建
     92 arr10 = np.array([("vilicute", 52, 5.02), ("shame", 55, 55.02)])
     93 print("
    自定义数据类型数组:arr10 = 
    ", arr10)
     94 '''
     95 自定义数据类型数组:arr10 = 
     96  [['vilicute' '52' '5.02']
     97   ['shame' '55' '55.02']]
     98 '''
     99 # 10、生成随机数组
    100 arr11 = np.random.random(10)  # 个数
    101 print("
    随机数组:arr11 = 
    ", arr11)
    102 '''
    103 随机数组:arr11 = 
    104  [0.10325528 0.58512919 0.44988683 0.49719158 0.6361162  0.08344581 0.00998028 0.85750635 0.37264001 0.94651211]
    105 '''
    106 # 11、生成服从均匀分布随机数
    107 arr12 = np.random.rand(4, 3)
    108 print("
    服从均匀分布随机数组:arr12 = 
    ", arr12)
    109 '''
    110 服从均匀分布随机数组:arr12 = 
    111  [[0.85982146 0.31343986 0.89078588]
    112   [0.15717079 0.04499381 0.32277901]
    113   [0.70737793 0.75456669 0.43207658]
    114   [0.73633332 0.05820537 0.73123502]]
    115 '''
    116 # 12、生成服从正态分布随机数
    117 arr13 = np.random.randn(4, 3)
    118 print("
    服从正态分布随机数组:arr13 = 
    ", arr13)
    119 '''
    120 服从正态分布随机数组:arr13 = 
    121  [[ 0.36057176 -0.71389648 -0.26165942]
    122   [ 1.38415272  0.90255961 -1.42104002]
    123   [ 0.48616978  1.22208226  0.65215556]
    124   [ 0.2997037   1.31383623 -0.10306966]]
    125 '''
    126 # 13、生成给定上下限的随机数组
    127 arr14 = np.random.randint(2, 10, size=[2, 5])   # size 维数
    128 print("
    给定上下限的随机数组:arr14 = 
    ", arr14)
    129 '''
    130 给定上下限的随机数组:arr14 = 
    131  [[2 8 4 4 7]
    132   [3 7 5 6 5]]
    133 '''
    (2)数组的访问
     1 # !usr/bin/env python
     2 # Author:@vilicute
     3 import numpy as np
     4 ar = np.random.randint(0,10,size = [4,5])
     5 print(ar)
     6 print(ar[1,3])    # 第二行第四列
     7 print(ar[0,2:4])  # 0行的3,4列元素
     8 print(ar[1:,2:])  # 1行2列之后的元素
     9 print(ar[:,2])    # 第3列元素
    10 print(ar[2,:])    # 第3行元素
    11 '''
    12 [[6 0 3 8 9]
    13  [8 7 4 8 2]
    14  [0 0 1 7 2]
    15  [8 2 0 8 7]]
    16  
    17 8
    18 [3 8]
    19 [[4 8 2]
    20  [1 7 2]
    21  [0 8 7]]
    22  
    23 [3 4 1 0]
    24 [0 0 1 7 2]
    25 '''
    (3)数组形态的变换
     1 # !usr/bin/env python
     2 # Author:@vilicute
     3 import numpy as np
     4 arr1 = np.arange(12)
     5 print(arr1)
     6 array1 = arr1.reshape(3, 4)
     7 print("
    新的数组形态为:
    ", array1)
     8 ndim = arr1.reshape(3, 4).ndim
     9 print("
    数组维度:", ndim)
    10 '''
    11 [ 0  1  2  3  4  5  6  7  8  9 10 11]
    12 新的数组形态为:
    13  [[ 0  1  2  3]
    14  [ 4  5  6  7]
    15  [ 8  9 10 11]]
    16 数组维度: 2
    17 '''
    18 arr2 = np.random.randint(5, 15, size=[4, 5])
    19 print(arr2)
    20 arr2_ravel = arr2.ravel()          #数组(横向)展平
    21 arr2_flatten = arr2.flatten()      #数组(横向)展平
    22 arr2_flatten_F = arr2.flatten('F') #数组(纵向)展平
    23 print("
    数组(横向)展平ravel(): ", arr2_ravel)
    24 print("
    数组(横向)展平flatten(): ", arr2_flatten)
    25 print("
    数组(纵向)展平flatten(): ", arr2_flatten_F)
    26 '''
    27 [[12  5  6  8 10]
    28  [11 11  8 11  7]
    29  [13  7  5  5 11]
    30  [ 8  6 11 13  6]]
    31 数组(横向)展平ravel(): [12  5  6  8 10 11 11  8 11  7 13  7  5  5 11  8  6 11 13  6]
    32 数组(横向)展平flatten(): [12  5  6  8 10 11 11  8 11  7 13  7  5  5 11  8  6 11 13  6]
    33 数组(纵向)展平flatten(): [12 11 13  8  5 11  7  6  6  8  5 11  8 11  5 13 10  7 11  6]
    34 '''
    35 arr3 = arr2*2
    36 print("
    乘法计算:
    ", arr3)
    37 '''
    38 乘法计算:
    39  [[24 10 12 16 20]
    40   [22 22 16 22 14]
    41   [26 14 10 10 22]
    42   [16 12 22 26 12]]
    43 '''
    44 arr_hstack = np.hstack((arr2, arr3)) #横向组合
    45 arr_vstack = np.vstack((arr2, arr3)) #纵向组合
    46 print("
    arr2与arr3横向组合:
    ", arr_hstack)
    47 print("
    arr2与arr3纵向组合:
    ", arr_vstack)
    48 ''' 功能同上
    49 arr_hstack = np.concatenate((arr2, arr3), axis=1) #横向组合
    50 arr_vstack = np.concatenate((arr2, arr3), axis=0) #纵向组合
    51 print("
    arr2与arr3横向组合:
    ", arr_hstack)
    52 print("
    arr2与arr3纵向组合:
    ", arr_vstack)
    53 '''
    54 '''
    55 arr2与arr3横向组合:
    56  [[12  5  6  8 10 24 10 12 16 20]
    57   [11 11  8 11  7 22 22 16 22 14]
    58   [13  7  5  5 11 26 14 10 10 22]
    59   [ 8  6 11 13  6 16 12 22 26 12]]
    60 arr2与arr3纵向组合:
    61  [[12  5  6  8 10]
    62   [11 11  8 11  7]
    63   [13  7  5  5 11]
    64   [ 8  6 11 13  6]
    65   [24 10 12 16 20]
    66   [22 22 16 22 14]
    67   [26 14 10 10 22]
    68   [16 12 22 26 12]]
    69 '''
    70 arr4 = np.arange(16).reshape(4, 4)
    71 print("
    arr4=
    ", arr4)
    72 arr_hsplit = np.hsplit(arr4, 2) #横向分割, <=>np.split(arr4,2,axis = 1)
    73 arr_vsplit = np.vsplit(arr4, 2) #纵向分割, <=>np.split(arr4,2,axis = 0)
    74 print("
    横向分割:
    ", arr_hsplit)
    75 print("
    纵向分割:
    ", arr_vsplit)
    76 '''
    77 arr4=
    78  [[ 0  1  2  3]
    79  [ 4  5  6  7]
    80  [ 8  9 10 11]
    81  [12 13 14 15]]
    82 横向分割:
    83  [array([[ 0,  1],
    84          [ 4,  5],
    85          [ 8,  9],
    86          [12, 13]]), 
    87   array([[ 2,  3],
    88          [ 6,  7],
    89          [10, 11],
    90          [14, 15]])]
    91 纵向分割:
    92  [array([[0, 1, 2, 3],
    93          [4, 5, 6, 7]]), 
    94   array([[ 8,  9, 10, 11],
    95          [12, 13, 14, 15]])]
    96 '''
    (4)数组排序
     1 # !usr/bin/env python
     2 # Author:@vilicute
     3 import numpy as np
     4 arr1 = np.random.randint(10, 100, size=[4, 5])
     5 arr2 = np.random.randint(10, 100, size=[4, 4])
     6 arr3 = np.random.randint(10, 100, size=[4, 3])
     7 arr4 = np.array(['小明', '小小', '小红', '小明', '小米', '小迭'])
     8 print("
    arr1=
    ", arr1, "
    arr2=
    ", arr2, "
    arr3=
    ", arr3)
     9 arr1.sort(axis=1)
    10 print("
    横向排序 arr1 =
    ", arr1)
    11 print("
    arr2=
    ", arr2)
    12 arr2.sort(axis=0)
    13 print("
    纵向排序 arr2 =
    ", arr2)
    14 print("
    arr3=
    ", arr3)
    15 print("
    排序下标(按行给出):
    ", arr3.argsort())
    16 print("
    arr4=", arr4)
    17 print("
    去重:", np.unique(arr4))
    18 print("
    重复:", np.tile(arr4, 2))
    19 print("
    按行重复:
    ", arr1.repeat(2, axis=1))
    20 print("
    按列重复:
    ", arr1.repeat(2, axis=0))
    21 '''
    22 arr1=
    23  [[24 11 78 47 65]
    24  [81 54 56 90 45]
    25  [75 61 50 22 23]
    26  [77 64 63 84 69]] 
    27 arr2=
    28  [[12 23 37 32]
    29  [41 20 58 77]
    30  [43 76 42 97]
    31  [77 53 28 90]] 
    32 arr3=
    33  [[53 33 81]
    34  [77 22 63]
    35  [90 20 66]
    36  [28 61 38]]
    37 横向排序 arr1 =
    38  [[11 24 47 65 78]
    39  [45 54 56 81 90]
    40  [22 23 50 61 75]
    41  [63 64 69 77 84]]
    42 arr2=
    43  [[12 23 37 32]
    44  [41 20 58 77]
    45  [43 76 42 97]
    46  [77 53 28 90]]
    47 纵向排序 arr2 =
    48  [[12 20 28 32]
    49  [41 23 37 77]
    50  [43 53 42 90]
    51  [77 76 58 97]]
    52 arr3=
    53  [[53 33 81]
    54  [77 22 63]
    55  [90 20 66]
    56  [28 61 38]]
    57 排序下标(按行给出):
    58  [[1 0 2]
    59  [1 2 0]
    60  [1 2 0]
    61  [0 2 1]]
    62 arr4= ['小明' '小小' '小红' '小明' '小米' '小迭']
    63 去重: ['小小' '小明' '小米' '小红' '小迭']
    64 重复: ['小明' '小小' '小红' '小明' '小米' '小迭' '小明' '小小' '小红' '小明' '小米' '小迭']
    65 按行重复:
    66  [[11 11 24 24 47 47 65 65 78 78]
    67  [45 45 54 54 56 56 81 81 90 90]
    68  [22 22 23 23 50 50 61 61 75 75]
    69  [63 63 64 64 69 69 77 77 84 84]]
    70 按列重复:
    71  [[11 24 47 65 78]
    72  [11 24 47 65 78]
    73  [45 54 56 81 90]
    74  [45 54 56 81 90]
    75  [22 23 50 61 75]
    76  [22 23 50 61 75]
    77  [63 64 69 77 84]
    78  [63 64 69 77 84]]
    79 '''
    (5)数组统计
     1 # !usr/bin/env python
     2 # Author:@vilicute
     3 import numpy as np
     4 arr1 = np.random.randint(10, 100, size=[4, 5])
     5 print("
    arr1=
    ", arr1)
     6 arr_sum = np.sum(arr1) #求和
     7 arr_sum0 = arr1.sum(axis=0) #纵向求和
     8 arr_sum1 = arr1.sum(axis=1) #横向求和
     9 arr_mean = np.mean(arr1) #均值
    10 arr_mean0 = arr1.mean(axis=0) #纵向均值
    11 arr_mean1 = arr1.mean(axis=1) #横向均值
    12 arr_std = np.std(arr1) #标准差
    13 arr_var = np.var(arr1) #方差
    14 arr_min = np.min(arr1) #最小值
    15 arr_max = np.max(arr1) #最大值
    16 arr_argmin = np.argmin(arr1) #最小值索引
    17 arr_argmax = np.argmax(arr1) #最大值索引
    18 print(" 求和:", arr_sum) 19 print(" 纵向求和:", arr_sum0) 20 print(" 横向求和:", arr_sum1) 21 print(" 均值:",arr_mean) 22 print(" 纵向均值:", arr_mean0) 23 print(" 横向均值:", arr_mean1) 24 print(" 标准差:", arr_std) 25 print(" 方差:", arr_var) 26 print(" 最小值:", arr_min) 27 print(" 最大值:", arr_max) 28 print(" 最小值索引:", arr_argmin) 29 print(" 最大值索引:", arr_argmax)
    30 ''' 31 arr1= 32 [[28 54 50 40 75] 33 [93 26 95 81 41] 34 [12 43 73 49 82] 35 [27 26 26 13 37]] 36 求和: 971 37 纵向求和: [160 149 244 183 235] 38 横向求和: [247 336 259 129] 39 均值: 48.55 40 纵向均值: [40.00 37.25 61.00 45.75 58.75] 41 横向均值: [49.4 67.2 51.8 25.8] 42 标准差: 25.437128375663793 43 方差: 647.0475000000001 44 最小值: 12 45 最大值: 95 46 最小值索引: 10 47 最大值索引: 7 48 '''

    (6)数组运算

     1 # !usr/bin/env python
     2 # Author:@vilicute
     3 
     4 # ufunc函数,针对数组所有元素进行操作,效率高
     5 
     6 import numpy as np
     7 
     8 arr1 = np.array([9,6,3])
     9 arr2 = np.array([2,5,6])
    10 arr3 = np.array([[1,1,1,],[2,2,2],[3,3,3],[4,4,4]])
    11 arr4 = np.array([[4],[5],[6],[7]])
    12 
    13 print("相加:",arr1+arr2)
    14 print("相减:",arr1-arr2)
    15 print("相乘:",arr1*arr2)
    16 print("相除:",arr1/arr2)
    17 print("幂运算:",arr1**arr2)
    18 
    19 print("比较运算:",arr1<arr2)   # >  <=  >=  ==  !=
    20 print("逻辑and 和 or:",np.all(arr1 == arr2),np.any(arr1 == arr2))
    21 print("
    一维广播机制相加:
    ",arr1+arr3)
    22 print("
    二维广播机制相加:
    ",arr4+arr3)
    23 
    24 '''
    25 相加: [11 11  9]
    26 相减: [ 7  1 -3]
    27 相乘: [18 30 18]
    28 相除: [4.5 1.2 0.5]
    29 幂运算: [  81 7776  729]
    30 比较运算: [False False  True]
    31 逻辑and 和 or: False False
    32 一维广播机制相加:
    33  [[10  7  4]
    34  [11  8  5]
    35  [12  9  6]
    36  [13 10  7]]
    37 二维广播机制相加:
    38  [[ 5  5  5]
    39  [ 7  7  7]
    40  [ 9  9  9]
    41  [11 11 11]]
    42 '''
  • 相关阅读:
    JavaScript 语句
    JavaScript语法
    JavaScript输出
    JavaScript用法
    JavaScript简介
    利用IDEA构建springboot应用-构建好SpringBoot + SSM 框架
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(4)--创建自定义任务表单
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(3)--创建工作流里的任务
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(2)--部署工作流的InfoPath表单
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流
  • 原文地址:https://www.cnblogs.com/vilicute/p/11605376.html
Copyright © 2020-2023  润新知