zoukankan      html  css  js  c++  java
  • numpy的操作

      1 import numpy as np
      2 
      3 ########################
      4 # 索引
      5 n1 = np.random.randint(0, 100, 10)
      6 # print(n1)
      7 '''
      8 [68 27 40 11 18  6 61 62 67 31]
      9 '''
     10 # print(n1[5])
     11 '''
     12 6
     13 '''
     14 n2 = np.random.randint(0, 100, (3, 4))  # 创建一个由0到100中随机产生的3行4列的随机数组
     15 # print(n2)
     16 '''
     17 [[46  5 20 78]
     18  [20  2 71 76]
     19  [27 71 19 39]]
     20 '''
     21 # print(n2[0, 1])  # 打印出来第0行的第2个元素
     22 '''
     23 5
     24 '''
     25 #############################
     26 # 切片操作
     27 n3 = np.random.randint(150, size=10)  # 创建一个由0到150的随机整数组成的元素个数为10的一维数组
     28 # print(n3)
     29 '''
     30 [ 41  72  15 121  55  76  65  10 101  77]
     31 '''
     32 # print(n3[1:3])  # 取出索引从1到2的值
     33 '''
     34 [72 15]
     35 '''
     36 n4 = np.random.randint(0, 100, (3, 4, 5))  # 创建一个3维数组
     37 # print(n4)
     38 '''
     39 [[[27 80 43 98 87]
     40   [96 99  2 41 86]
     41   [73 83 96 54 26]
     42   [10 76 87 53 47]]
     43 
     44  [[33 63 98 70 41]
     45   [82 29 80 92 72]
     46   [98 44 51 97 85]
     47   [23 33  2 10 49]]
     48 
     49  [[86 79 98 76 65]
     50   [42  4 29 38 90]
     51   [ 6 57 92 66 38]
     52   [36 58 25 43 53]]]
     53 '''
     54 # print(n4[1:3])
     55 '''
     56 [[[33 63 98 70 41]
     57   [82 29 80 92 72]
     58   [98 44 51 97 85]
     59   [23 33  2 10 49]]
     60 
     61  [[86 79 98 76 65]
     62   [42  4 29 38 90]
     63   [ 6 57 92 66 38]
     64   [36 58 25 43 53]]]
     65 '''
     66 # print(n4[1:3, 1:4])
     67 '''
     68 [[[82 29 80 92 72]
     69   [98 44 51 97 85]
     70   [23 33  2 10 49]]
     71 
     72  [[42  4 29 38 90]
     73   [ 6 57 92 66 38]
     74   [36 58 25 43 53]]]
     75 '''
     76 # print(n4[1:3, 1:4, 1:4])
     77 '''
     78 [[[29 80 92]
     79   [44 51 97]
     80   [33  2 10]]
     81 
     82  [[ 4 29 38]
     83   [57 92 66]
     84   [58 25 43]]]
     85 '''
     86 ###############################
     87 # 变形
     88 n5 = np.random.randint(0, 100, (3, 4))
     89 # print(n5)
     90 '''
     91 [[78 85 94 85]
     92  [16 67 88 71]
     93  [80 12 13 10]]
     94 '''
     95 n6 = n5.reshape(4, 3)
     96 # print(n6)
     97 '''
     98 [[78 85 94]
     99  [85 16 67]
    100  [88 71 80]
    101  [12 13 10]]
    102 '''
    103 ## reshape和resize的区别
    104 a = np.array([(1, 2, 3), (4, 5, 6)])
    105 b = a.reshape(3, 2)
    106 # print(b)
    107 '''
    108 [[1 2]
    109  [3 4]
    110  [5 6]]
    111  将a数组的数据由2行3列变成3行2列得到b数组,但是a数组没有发生改变
    112  '''
    113 a.resize(3, 2)
    114 # print(a)
    115 '''
    116 [[1 2]
    117  [3 4]
    118  [5 6]]
    119  a数组由2行3列变成3行2列,此时,a数组的形状发生了改变
    120  '''
    121 # 多维数组降成一维
    122 # print(n6.shape)
    123 '''
    124 (4, 3)
    125 '''
    126 n7 = n6.reshape(4 * 3)
    127 # print(n7)
    128 '''
    129 [23 65 78 78 85 11 44 69 85 10 11 43]
    130 '''
    131 n8 = n6.reshape(-1)
    132 # print(n8)
    133 '''
    134 [23 65 78 78 85 11 44 69 85 10 11 43]
    135 '''
    136 ###############################
    137 # 级联(将两个数组连在一起)
    138 '''
    139 注意:1、级联的参数必须是列表:一定要加中括号或小括号
    140       2、维度必须相同
    141       3、形状相符
    142       4、【重点】级联的方向默认是shape这个元组的第一个值所代表的维度方向
    143       5、可以通过axis参数改变级联的方向
    144 '''
    145 n9 = np.random.randint(0, 10, size=(5, 5))  # 创建一个由0到10的正整数的随机数生成的5行5列的随机数组
    146 # print(n9)
    147 '''
    148 [[7 1 9 3 0]
    149  [7 0 9 3 0]
    150  [2 1 4 0 6]
    151  [0 8 2 8 3]
    152  [6 8 8 4 4]]
    153 '''
    154 n10 = np.concatenate((n9, n9))  # 横着级联
    155 # print(n10)
    156 '''
    157 [[7 1 9 3 0]
    158  [7 0 9 3 0]
    159  [2 1 4 0 6]
    160  [0 8 2 8 3]
    161  [6 8 8 4 4]
    162  [7 1 9 3 0]
    163  [7 0 9 3 0]
    164  [2 1 4 0 6]
    165  [0 8 2 8 3]
    166  [6 8 8 4 4]]
    167 '''
    168 n11 = np.concatenate((n9, n9), axis=0)  # 竖着级联
    169 # print(n11)
    170 '''
    171 [[7 1 9 3 0]
    172  [7 0 9 3 0]
    173  [2 1 4 0 6]
    174  [0 8 2 8 3]
    175  [6 8 8 4 4]
    176  [7 1 9 3 0]
    177  [7 0 9 3 0]
    178  [2 1 4 0 6]
    179  [0 8 2 8 3]
    180  [6 8 8 4 4]]
    181 '''
    182 n12 = np.concatenate((n9, n9), axis=1)  # 横着级联
    183 # print(n12)
    184 '''
    185 [[7 1 9 3 0 7 1 9 3 0]
    186  [7 0 9 3 0 7 0 9 3 0]
    187  [2 1 4 0 6 2 1 4 0 6]
    188  [0 8 2 8 3 0 8 2 8 3]
    189  [6 8 8 4 4 6 8 8 4 4]]
    190 '''
    191 n13 = np.array([
    192     (1, 2, 3),
    193     (7, 8, 9)
    194 ], dtype=int)
    195 # print(n13)
    196 '''
    197 [[1 2 3]
    198  [7 8 9]]
    199 '''
    200 n14 = np.hstack(n13)  # 将多维数组进行水平级联,处理自己进行维度变更
    201 # print(n14)
    202 '''
    203 [1 2 3 7 8 9]
    204 '''
    205 n15 = np.vstack(n14)  # 将一维数组进行垂直级联,处理自己进行维度变更
    206 # print(n15)
    207 '''
    208 [[1]
    209  [2]
    210  [3]
    211  [7]
    212  [8]
    213  [9]]
    214 '''
    215 n16 = np.array([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]])
    216 # print(n16)
    217 #################################
    218 # 切分
    219 '''
    220 与级联类似,三个函数完成切分工作:
    221 1、np.split
    222 2、np.vsplit
    223 3、np.hsplit
    224 '''
    225 n17 = np.random.randint(0, 150, size=(5, 7))
    226 # print(n17)
    227 n18 = np.split(n17, (1, 3))  # 按行切割数组,此处是分别在行号为1和3前切割
    228 n19 = np.split(n17, (1, 3), axis=0)  # 和n18的操作一样
    229 # print(n18)
    230 #####################################
    231 # 副本
    232 '''
    233 所有赋值运算不会为ndarray的任何元素创建副本。赋值后的对象的操作也对原来的对象生效。
    234 '''
    235 n20 = np.random.randint(0, 100, (3, 4))
    236 # print(n20)
    237 '''
    238 [[ 8 83 57 15]
    239  [81 61  0  0]
    240  [56 88 73 91]]
    241 '''
    242 n21 = n20  # 此时,n21和n20是完全相同,并且两者是有联系的。对n21操作的同时也对n22操作了。实际上是两者的指针指向了同一块内存地址
    243 n21[2, 3] = 500
    244 # print(n21)
    245 '''
    246 [[  8  83  57  15]
    247  [ 81  61   0   0]
    248  [ 56  88  73 500]]
    249 '''
    250 # print(n20)
    251 '''
    252 [[  8  83  57  15]
    253  [ 81  61   0   0]
    254  [ 56  88  73 500]]
    255 '''
    256 n22 = np.array([[8, 83, 57, 15],
    257                 [81, 61, 0, 0],
    258                 [56, 88, 73, 91]])
    259 n23 = n22.copy()  # 此时n23为n22的副本,与n22完全分隔开了,对n23操作不会影响到n22。实际上是,在内存中新建了一个地方,把n22的值存放在里面,同时n23的指针也指向了新的地址,而n22任然指向原先的。
    260 n23[1, 2] = 500
    261 # print(n23)
    262 '''
    263 [[  8  83  57  15]
    264  [ 81  61 500   0]
    265  [ 56  88  73  91]]
    266 '''
    267 # print(n22)
    268 '''
    269 [[ 8 83 57 15]
    270  [81 61  0  0]
    271  [56 88 73 91]]
    272 '''
    273 ##数组的计算
    274 a = np.array([1, 2, 3])
    275 b = np.array([4, 5, 6])
    276 # 加法
    277 c = a + b
    278 print(c)
    279 '''
    280 [5 7 9]
    281 '''
    282 # 减法
    283 d = a - b
    284 print(d)
    285 '''
    286 [-3 -3 -3]
    287 '''
    288 # 乘法
    289 e = a * b
    290 print(e)
    291 '''
    292 [ 4 10 18]
    293 '''
    294 # 求和
    295 f = np.array([(1, 2, 3), (4, 5, 6)])
    296 print(f.sum())
    297 '''
    298 21
    299 '''
    300 # 按列求和
    301 print(f.sum(axis=0))
    302 '''
    303 [5 7 9]
    304 '''
    305 # 按行求和
    306 print(f.sum(axis=1))
    307 '''
    308 [ 6 15]
    309 '''
    310 # 最小值的值
    311 print(f.min())
    312 '''
    313 1
    314 '''
    315 # 最小值的索引
    316 print(f.argmin())
    317 '''
    318 0
    319 '''
    320 # 最大值的值
    321 print(f.max())
    322 '''
    323 6
    324 '''
    325 print(f.argmax())
    326 '''
    327 5
    328 '''
    329 # 平均值
    330 print(f.mean())
    331 '''
    332 3.5
    333 '''
    334 # 方差
    335 print(f.var())
    336 '''
    337 2.9166666666666665
    338 '''
    339 # 标准差
    340 print(f.std())
    341 '''
    342 1.707825127659933
    343 '''
    344 #############
    345 # 线性代数的运算
    346 # 矩阵内积
    347 np.dot()
    348 # 行列式
    349 np.linalg.det()
    350 # 逆矩阵
    351 np.linalg.inv()
    352 # 多元一次方程组求根
    353 np.linalg.solve()
    354 # 求特征值和特征向量
    355 np.linalg.eig()
  • 相关阅读:
    实用机器学习 跟李沐学AI
    Explicitly drop temp table or let SQL Server handle it
    dotnettransformxdt and FatAntelope
    QQ拼音输入法 禁用模糊音
    (技术八卦)Java VS RoR
    Ruby on rails开发从头来(windows)(七)创建在线购物页面
    Ruby on rails开发从头来(windows)(十三)订单(Order)
    Ruby on rails开发从头来(windows)(十一)订单(Order)
    新员工自缢身亡,华为又站到了风口浪尖
    死亡汽油弹(Napalm Death)乐队的视频和来中国演出的消息
  • 原文地址:https://www.cnblogs.com/xshan/p/10046552.html
Copyright © 2011-2022 走看看