一、导入模块
import numpy as np
二、创建 ndarray 对象,以及一些基本操作
1、使用 numpy.arange 创建
np.arange(start,end,step,dtype)
2、使用numpy.array 创建
np.array(list,dtype)
3、获取数组的维度和数据类型
3.1、返回一个元组,存放对象每一个维度上的大小
array.shape
3.2、获取numpy数组类型的元素
array.dtype
4、numpy 自带的一些创建特殊数组的函数
a = np.zeros((2,2)) # 创建一个值为0的2*2多维ndarray对象
b = np.ones((1,2)) # 创建一个值均为1的2*2维ndarray对象
c = np.full((2,2),7) # 创建一个值均为7的2*2维ndarray对象
d = np.eye(2) # 创建一个2*2维对角矩阵
e = np.eye(3,k=-2) #第二个参数k:默认情况下输出的是对角线全“1”,其余全“0”的方阵, 如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则 在左下方第k条对角线全“1”其余全“0”
5、创建随机数矩阵
np.random.random((4,5)) # 值的范围(0,1)
np.random.randint(0,50,10) # 创建10个0~50以内的类型为int的数组
6、help查看某个方法或者属性的帮助文档
help(np.random.randint)
7、创建自定义类型,‘字符串类型’需要用np.str_
t = np.dtype([('name',np.str_,40),
('num',np.int32),
('price',np.float32)])
7.1 查看某个字段的数据类型
t['price']
7.2 使用自定义数据类型
product = np.array([('DVD',23,12.4),('Butter',23,8.23)],dtype=t)
8、查看数组中元素的个数
product.size
三、数组的索引和切片
索引
1、一维数组的索引
读取数组的方式,与读取list 、元组一样,可以使用下标
list2 = [10,20,30,40]
2、二维数组的索引
arr2 = np.array([range(1,5),range(5,9)])
arr2[1][2]
3、三维数组的索引
# np.arange(start,end,step='1') step 可以为浮点型
arr3 = np.arange(1,25).reshape(2,3,4)
切片
1、切一维数组
a = np.arange(1,19)
# 语法 a[start:end:step]
a[1::2]
a[::-2]
2、切二维数组
b = np.arange(1,7,0.5).reshape(3,4)
[each[0] for each in b] # 推导式取值
b[::]
b[::][0]
b[0][3]
# 数组array 多层读取的时候,可以b[0][3] 写成b[0,3]
b[0,3]
# 本质上 是 array[start:end:step,start:end:step,...]
b[::,0]
四、改变数组的维度
改变数组维度
1、reshape() 不改变原数组
result1 = arr.reshape(4,6)
2、通过shape属性进行更改,直接更改原数组
arr.shape = (6,4) # 获取数组的维度,通过属性更改
3、通过resize(),直接更改原数组
arr3.resize(3,2,4)
展平数组
1、array.ravel() 展平,不更改原数组
result4 = arr4.ravel()
2、array.flatten()展平,不更改原数组
result5 = arr4.flatten()
矩阵转置
1、array.transpose() 转置,不改变原数据
arr5.transpose()
五、数组的组合
horizontal 水平的
vertical 垂直度
concatenate 连接
axis 轴 axis = 0 跨行 axis = 1 跨列
row 行
column 列
1、水平组合
np.hstack((数组1,数组2,...))
np.concatenate((数组1,数组2,...),axis=1)
2、垂直组合
np.vstack((数组1,数组2,...))
np.concatenate((m,dM),axis=0) axis 默认为0,可以省略
3、深度组合
np.dstack((数组1,数组2,...))
比如:每个班有3个组,每组3个人。将2个班 对应组的对应位置的人组合到一起
4、列组合
column_stack((数组1,数组2,...))
若是 组合 二维数据,则 和 hstack 相同
5、行组合
row_stack((数组1,数组2,...))
若是 组合 二维数据,则 和 vstack 相同