Python常用模块(一)Numpy

1.ndarray创建

arr=np.array(list,tuple) #一维二维都可创建;

np.zeros((3,3))   #创建全零数组;

np.ones((3,3)) #创建全一数组;

np.empty() #创建未初始化数组;

np.arange(a,b,c) # [a,b)  c为步长可有可无,没有默认为1;

np.linspace(0,10,5) #创建一个等差数列,元素个数是5,从0开始计算,10为等差数列的终值;

np.logspace(0,2,5) #创建一个等比数列,0表示10的0次方,2表示10的2次方,5为最终生成的元素个数;

np.random.random(4,2,3) #创建4个2行3列的数组。实际上是三维的:2,3各一维,4看作一个整体,算是一维。

np.random.ran(9) #创建9个0到1的随机值

np.random.randn(3,3) #正态分布

np.random.randint(1,9,(3,3)) #创建一个3*3的数组,数组元素为1到9之间的随机整数(int)

2.ndarray对象属性

arr.ndim #数组轴  的个数,也叫轶/维度

arr.shape #数组的维度

        reshape 可以修改数组形状  -1代表自动分配   

arr.size #元素个数

arr.dtype #元素的数据类型

arr.itemsize #数组中每个元素的字节大小

3.ndarray运算

数组与标量:

          数组的全部元素都会参与跟这个标量之间的运算:+ - * / 幂运算 。

数组与数组:

           也叫广播,两个数组对应维度的行与行,列与列发生运算,与矩阵不同。2*2的与2*2的就是对应运算,而2*3与1*3就是把后者跟前者的行与列分别对应运算,也就是1跟2的两行都运算,共两次,生成新的数组维度依然是2*3。

4.ndarray多维数组的索引、切片、花式索引、布尔索引

arr[3][1][2]  #第三个数组的第二行的第三列(也可以说是第三个)元素;

arr[1][0][1:3]  #切片就是查看很多元素,切片的目的在于每个维度取值或查看元素的范围的限定;还可以利用切片修改列表的元素值;

arr[np.ix_([0,3,5],[0,2,3])] #使用索引器分别获取0,3,5行的0,2,3列;

arr[[0,3,5],[0,2,3]] # 获取(0,0),(3,2),(5,3)的位置处的元素值;

“布尔类型”贴一个例子:

import numpy as np
names=np.array(['joe','tom','anne'])
scores=np.array([
    [70,80,90],
    [77,88,91],
    [80,90,70]
])
classes=np.array(['语文','数学','英语'])

5.ndarray数组的转置与轴对换

arr(5,8).transpose()=arr(8,5)  /  arr(5,8).T=arr(8,5)

arr.transpose(1,2,0) #轴对换  不是很懂,以后遇到的话再研究

6.ndarray数组的拉伸与合并

np.tile(arr,2) #横向拉伸两倍

np.tile(arr,(3,1))  #纵向拉伸3倍,横向拉伸1倍

np.stack(axis=1,2 默认为0)  #axis=0相当于从第一行往下依次添加,axis=1相当于从第一列从左往右添加,axis=2相当于矩阵的转置

np.hstack((arr1,arr2)) #横向合并

np.vstack((arr1,arr2)) #纵向合并

7.ndarray聚合函数/一元/二元函数

amin()  amax() mean() #平均值   |可由此计算方差、标准差、方差;

np.where(condition,arr1,arr2) #满足condition取出arr1的满足条件的元素,反之取arr2的元素;

np.unique(目标数组) #去重。

一元/二元函数有表可查询。

猜你喜欢

转载自blog.csdn.net/qq_37228811/article/details/81144232