• python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、形状变化


    数组的切片索引:

      数组的切片索引和列表非常类似,下面用代码简单说明

     1 a = np.random.rand(16).reshape(4, 4)
     2 print("数组a:
    ", a)
     3 print(a[-1][1:4])
     4 Out[1]:
     5 数组a:
     6  [[0.04175379 0.43013992 0.5398909  0.40638248]
     7  [0.3305902  0.11958799 0.48680358 0.30755734]
     8  [0.00893887 0.3848716  0.21018253 0.88170218]
     9  [0.80198391 0.4922656  0.67535542 0.64647139]]
    10 [0.4922656  0.67535542 0.64647139]

      由于和列表类似,且要符号多维数组的特征,所以这里不过多阐述。有需要参考列表的相关知识。

    数组的循环遍历:

     1 a = np.random.rand(9).reshape(3, 3)
     2 print("数组a:
    ", a)
     3 for row in a:
     4     print(row)  # 一行一行的输出
     5 for item in a.flat:
     6     print(item)
     7 # 通用的循环函数
     8 for_test = np.apply_along_axis(np.mean, axis=0, arr=a)  # apply_along_axis(func1d, axis, arr, *args, **kwargs)
     9 print("np.apply_along_axis的调试:
    ", for_test)  # axis=0为按列,axis=1为按行
    10 Out[2]:
    11 数组a:
    12  [[0.97420758 0.20766438 0.52942127]
    13  [0.82673775 0.44288163 0.41729451]
    14  [0.1373707  0.68103565 0.92256133]]
    15 [0.97420758 0.20766438 0.52942127]
    16 [0.82673775 0.44288163 0.41729451]
    17 [0.1373707  0.68103565 0.92256133]
    18 0.9742075804081937
    19 0.20766438289931244
    20 0.5294212665874829
    21 0.8267377457345865
    22 0.44288163199889663
    23 0.4172945079908593
    24 0.13737070280419617
    25 0.6810356459375222
    26 0.922561331228303
    27 np.apply_along_axis的调试:
    28  [0.64610534 0.44386055 0.62309237]

      np.apply_along_axis()方法在我们对矩阵按行按列操作的时候最好用它。注意,第一个参数是方法,方法可以是自己对矩阵每个元素操作的函数方法。

    条件和布尔数组:

     
    1 a = np.random.rand(9).reshape(3, 3)
    2 print(a < 0.5)          # 输出布尔数组
    3 print(a[a < 0.5])       # 输出true对应的元素
    4 Out[3]:
    5 [[ True False  True]
    6  [False  True False]
    7  [False  True False]]
    8 [0.19353844 0.03944841 0.38137674 0.3069755 ]

    数组 形状变化:

     1 a = np.random.rand(9).reshape(3, 3)
     2 a = a.ravel()  # 此时的a是一个新数组
     3 print(a)  # 将数组平铺成一维数组
     4 a.shape = (3, 3)  # 你也可以用reshape
     5 print(a)
     6 Out[4]:
     7 [0.83017305 0.11660585 0.83060752 0.221212   0.35489551 0.74925696
     8  0.61087204 0.85969402 0.90966368]
     9 [[0.83017305 0.11660585 0.83060752]
    10  [0.221212   0.35489551 0.74925696]
    11  [0.61087204 0.85969402 0.90966368]]

      注意用A.T表示转置,或者用A.transpose()。

    清澈的爱,只为中国
  • 相关阅读:
    Windows API Reference for C#, VB.NET and VB6
    工程建设项目综合信息管理系统
    GridView,Repeater分页控件:WebPager 开源了
    asp.net服务器控件开发学习之路(一)
    ajaxToolkit:TabContainer 背景色的设置
    TreeView 树结构的断层处理
    C# 集合类(二):Queue
    AutoCAD.net(三)用VS.NET2005开发ObjectARX程序 调试方法
    AutoCAD.net(一):更改AutoCAD窗口的标题和图标
    C# 集合类(四):Hashtable
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/9388007.html
Copyright © 2020-2023  润新知