9] 获得
6 x = arr1[1:3].copy() #如果不想要获得是一份视图的话,就用显示的复制这个数组 .copy()
7 print(arr1)
2.多维数组的索引
多维数组的每一个维度都有一个索引,各个维度的索引之间用逗号隔开,或分两个括号
1 arr= np.arange(9).reshape(3,3)
2 print(arr[0][2]) #2
3 print(arr[0,2]) #2 这两种方式访问等价
4 print(arr[1:,1:]) #第二、三行,第二、三列
5 print(arr[:2,2]) #前两行,第三列
6 arr2 = np.array([[[1,2,3],[4,5,6]],[7,8,9],[10,11,12]])
7 print(arr2[0]) #[[1, 2, 3], [4, 5, 6]]
8 print(arr2[0][0]) #[1, 2, 3]
3.布尔索引
1 names = np.array(["A","B","C","D","E","F"])
2 data = np.random.randn(6,4)
3 print(names=="B") #[False True False False False False]
4 print(data[names=='B']) #在索引数组中引入布尔数组 选择names=="B"的行
5 print(data[names=='B',2:]) #names ="B" 的后两列
6.改变数组的形态
在对数组进行操作时,经常需要改变数组的维度。在Numpy中,常用reshape函数改变数组的“形状”,也就是改变数组的维度。参数为一个正整数元组,分别指定数组在每个维度上的大小,reshape函数在改变原始数据形状的同时不改变原始数据。如果指定的数据和数组的元素不吻合,则函数将抛出异常。
使用ravel()、flatten()完成展开工作,使用hstack()、vstack() 、concatenate完成组合操作,使用hsplit、vsplit、dsplit、split完成分割操作,可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置。
1 arr = np.arange(12)
2 print("创建一维数组:",arr)
3 print("新的数组:",arr.reshape(3,4)) #返回(3,4)的数组
4 print("数组的维度:",arr.ndim) #查看数组的维度 2
5 arr2 = np.arange(12).reshape(3,4)
6 print("创建的二维数组:",arr2)
7 print("使用ravel展平:",arr2.ravel()) #获得一维数组[ 0 1 2 3 4 5 6 7 8 9 10 11]
8 print("使用flatten横向展开:",arr2.flatten()) #横向展开 [ 0 1 2 3 4 5 6 7 8 9 10 11]
9 print("使用flatten纵向展开:",arr2.flatten("F")) #纵向展开,[ 0 4 8 1 5 9 2 6 10 3 7 11]
10 arr3 = arr2 *3
11 print("使用hstack完成横向组合:",np.hstack((arr2,arr3))) #横向组合
12 print("使用vstack完成纵向组合:",np.vstack((arr2,arr3))) #纵向组合
13 print("使用concatenate完成纵向组合操作",np.concatenate((arr2,arr3),axis=0)) #沿着纵向组合
14 print("使用concatenate完成横向组合操作",np.concatenate((arr2,arr3),axis=1)) #沿着横向组合
15 print("横向分割:",np.hsplit(arr2,2)) #使用hsplit完成横向分割
16 arr4 = np.arange(16).reshape(4,4)
17 print("纵向分割:",np.vsplit(arr4,2)) #使用vstack完成纵向分割 必须保证分割后相同大小
18 print("横向分割:",np.split(arr4,axis=1)) #完成横向分割
19 print("纵向分割:",np.split(arr4,axis=0)) #完成纵向分割
7.创建numpy矩阵
在Numpy中,矩阵是ndarray的子类,在Numpy中,数组和矩阵有着重要的区别.Numpy中提供了两个基本的对象:一个N维数组对象和一个通用函数对象。其他对象在它们之上构建的。矩阵是继承自Numpy数组对象的二维数组对象。矩阵也是二维的
使用mat、matrix、bmat函数构建矩阵和矩阵的操作
mat1 = np.mat("1 2 3;2 3 4;3 4 5") print("使用mat创建的矩阵:",mat1) mat2 = np.matrix([[1,2,3],[2,3,4],[3,4,5]]) print("使用matrix创建的矩阵:",mat2) mat3 = np.bmat("mat1;mat2") print("使用bmat创建的矩阵:",mat3) mat4 = mat1*3 print("矩阵与数相乘:",mat4) mat5 = mat1+mat2 print("矩阵相加结果:",mat5) mat6 = mat2 - mat1 print("矩阵相减结果:",mat6) mat7 = mat1 * mat2 #等价于mat1@mat2 print("矩阵与矩阵相乘:",mat7) #相当于求内积 mat8 = np.multiply(mat1,mat2) print("矩阵对应元素相乘:",mat8) print("矩阵的转置:",mat1.T) #相当于mat1.T print("矩阵的共轭转置:",mat1.H) print("矩阵的逆矩阵:",mat1.I) print("矩阵的一个视图:",mat1.A)
8.ufunc函数
ufunc函数全称为通用函数,是一种能够对数组中的所有元素(逐元素)进行操作的函数。ufunc是针对数组进行操作的,并且都以Numpy数组作为输出,因为不需要对数组中的每个元素进行操作。
一元通用函数:
add、fabs 逐元素计算整数、浮点数或复数的绝对值
sqrt:计算每个元素的平方根
square:计算每个元素的平方
exp:计算每个元素的自然指数值
log |