Numpy 对于矩阵的操作持续更新
>>> import numpy as np >>> a = np.random.randint(10,size=(5,5)) >>> a array([[0, 8, 3, 0, 2], [0, 6, 6, 6, 3], [0, 3, 6, 8, 7], [2, 6, 1, 4, 4], [4, 1, 5, 6, 4]])
1. 数组切片
随机生成5x5的一个矩阵
提取矩阵第n列
>>> a[:,3] array([0, 6, 8, 4, 6])
提取矩阵第n行
>>> a[3,:] array([2, 6, 1, 4, 4])
提取矩阵第n行到第n+m行
>>> a[1:4] array([[0, 6, 6, 6, 3], [0, 3, 6, 8, 7], [2, 6, 1, 4, 4]])
提取矩阵第n行到第n+m列
>>> a[:,1:4] array([[8, 3, 0], [6, 6, 6], [3, 6, 8], [6, 1, 4], [1, 5, 6]])
使用布尔数组选取数据集中大于4的数字
>>> a[a>4] array([8, 6, 6, 6, 6, 8, 7, 6, 5, 6])
使用布尔数组选取数据集中第二列大于3的数字所在的行
>>> a[a[:,1]>3] array([[0, 8, 3, 0, 2], [0, 6, 6, 6, 3], [2, 6, 1, 4, 4]])
使用布尔数组选取数据集中第二列等于3的数字所在的行
>>> a[a[:,1]==6] array([[0, 6, 6, 6, 3], [2, 6, 1, 4, 4]])
使用布尔数组设置值,把数组a中小于4的值都设置为0
>>> a[a<4]=>>> a array([[0, 8, 0, 0, 0], [0, 6, 6, 6, 0], [0, 0, 6, 8, 7], [0, 6, 0, 4, 4], [4, 0, 5, 6, 4]])
使用一维布尔数组设置整行或列:把第一列中含有数字6的行,全部设置为7
>>> a[a[:,1]==6]=7 >>> a array([[0, 8, 3, 0, 2], [7, 7, 7, 7, 7], [0, 3, 6, 8, 7], [7, 7, 7, 7, 7], [4, 1, 5, 6, 4]])
取特定顺序行的数组,通过传递一个列表或整形ndarray来指定想要的顺序
>>> a[[1,3,4]] array([[7, 7, 7, 7, 7], [7, 7, 7, 7, 7], [4, 1, 5, 6, 4]])
2.数组索引
返回array中数字6的索引值
>>> np.where(a==6) (array([1, 1, 1, 2, 3, 4]), array([1, 2, 3, 2, 1, 3]))
返回的是一个tuple,第一个代表的是按列查找的索引值,第二个代表的是按行查找的索引值
类似的
>>> np.argwhere(a==6) array([[1, 1], [1, 2], [1, 3], [2, 2], [3, 1], [4, 3]])
返回的是一个array
3.类型转换
类型转换
>>> a.astype(np.float) array([[0., 8., 3., 0., 2.], [0., 6., 6., 6., 3.], [0., 3., 6., 8., 7.], [2., 6., 1., 4., 4.], [4., 1., 5., 6., 4.]]) >>> a.astype(np.str) array([['0', '8', '3', '0', '2'], ['0', '6', '6', '6', '3'], ['0', '3', '6', '8', '7'], ['2', '6', '1', '4', '4'], ['4', '1', '5', '6', '4']], dtype='<U21')
数组和纯量之间的操作
>>> a*a array([[ 0, 64, 9, 0, 4], [ 0, 36, 36, 36, 9], [ 0, 9, 36, 64, 49], [ 4, 36, 1, 16, 16], [16, 1, 25, 36, 16]]) >>> a-a array([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]])
纯量的算术操就是把操作值作用于每一个元素
>>> a-3 array([[-3, 5, 0, -3, -1], [-3, 3, 3, 3, 0], [-3, 0, 3, 5, 4], [-1, 3, -2, 1, 1], [ 1, -2, 2, 3, 1]]) >>> a*3 array([[ 0, 24, 9, 0, 6], [ 0, 18, 18, 18, 9], [ 0, 9, 18, 24, 21], [ 6, 18, 3, 12, 12], [12, 3, 15, 18, 12]])