开发者学堂课程【Python 常用数据科学库:数组结构】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7463
数组结构
矩阵格式(多维的形式)
例.In [ 25 ] : tang_array = np.array ( [ [1,2,3],
[4,5,6] ] ,
[7,8,9] ] )
tang_array
此时打印,会显示如下结果:
Out [25] : array ( [ [1,2,3],
[4,5,6],
[7,8,9] ] )
此时创造出一个二维的矩阵
In [26] : tang_array.shape
此时打印,会显示如下结果:
Out [26] : (3,3)
此时创造出一个三行三列的矩阵
In [27] : tang_array.size
此时打印,会显示如下结果:
Out [27] : 9
体现有9个元素
In [28] : tang_array.ndim
Out [28] :2
体现有两维
In [29] : tang_array [1,1]
Out [29] :5
由“5”在第一行第一列而得出
如果将第一行第一列赋值为“10”:
In [30] : tang_array [1,1] =10
tang_array
此时打印,会显示如下结果:
Out [30] : array ( [ [ 1,2,3],
[4,10,6],
[7,8,9] ] )
即第一行第一列的数变成了“10”
如果只取第一行:
In [31] : tang_array [1]
此时打印,会显示如下结果:
Out [31] : array ( [4,10,6] )
即显示出第一行
如果只想取列,行的位置可用冒号替代,如下所示:
In [32] : tang_array [:,1]
Out [32] : array ( [2,10,8] )
即显示出第一列
如果想取第0行中的两个值,即:
In [33] : tang_array [0,0:2]
Out [33] : array ( [1,2] )
显示出第0行中的两个值
In [34] : tang_array
Out [34] : array ( [ [ 1,2,3],
[4,10,6],
[7,8,9] ] )
如将 tang_array2 赋为 tang_array,即
In [35] : tang_array2 = tang_array
tang_array2
Out [35] : array ( [ [ 1,2,3],
[4,10,6],
[7,8,9] ] )
则打印出的结果与 tang_array 一样
如将 tang_array2 中的第一行第一列改为100,即:
In [36 ] : tang_array2 [1,1] =100
tang_array2
Out [36] : array ( [ [ 1,2,3],
[4,100,6],
[7,8,9] ] )
即第一行第一列的数变成了“100”
In [37 ] : tang_array
Out [37] : array ( [ [ 1,2,3],
[4,100,6],
[7,8,9] ] )
此时 array 的结果与 array2 一样
现做如下改变:
In [38] : tang_array2 = tang_array.copy()
tang_array2
Out [38] : array ( [ [ 1,2,3],
[4,100,6],
[7,8,9] ] )
即第一行第一列的数为“100”
现将 array2 第一行第一列的数改为“10000”,发现 array 的值没变,如下所示:
In [39 ] : tang_array2 [1,1] =10000
tang_array2
Out [39] : array ( [ [ 1,2,3],
[4,10000,6],
[7,8,9] ] )
In [40] : tang_array
Out [40] : array ( [ [ 1,2,3],
[4,100,6],
[7,8,9] ] )
证明加上“.copy()”后,array2 的值与 array 互不干扰
现引进“arange”函数:
In [47] : tang_array=np.arange(0,100,10)
tang_array
“(0,100,10)”的意思是“从0到100的10个等差数列”,此时打印,结果如下:
Out[47] : array ( [0,10,20,30,40,50,60,70,80,90] )
现构造一个数组,如下所示:
In [51] : mask=np.array ( [0,0,0,1,1,1,0,0,1,1],dtape=boo1)
Mask
现打印的结果与10个数一一对应,即:
Out[51] : array [False, False, False,True, True, True, False, False,True, True],dtape=boo1)
In [52] :tang_array [mask]
Out [52] : array ( [30,40,50,80,90] )
现准备构造10个随机数,即:
In [53] : random_array=np.random.rand(10)
random_array
此时打印,会出现以下结果:
Out [53] : array ([0.5138874,0.57986996,0.05474169,0.5019837,0.82705166,
0.95557716,0.83348612,0.32385451,0.52586287,0.92505535])
In [54] :mask=random_array>0.5
Mask
此时打印,会出现以下结果:
Out [54] : array ( [True, True, False, True, True, True, True, False, True, True],dtape=boo1)
In [55] : tang_array [mask]
Out [55] : array ( [0,10,30,40,50,60,80,90] )
此时显示出“True”的值
现重新指定一个 array 结构,即 :
In [56] : tang_array=np.array ( [10,20,30,40,50] )
tang_array>30
此时打印,会出现以下结果:
Out [56] : array [False, False, False,True, True], dtape=boo1)
In [57] :np.where(tang_array>30)
此时打印,会出现以下结果:
Out [57] :(array( [3,4],dtape=int64),)
即返回了“3,4”