numpy快速入门教程(二)
来源:互联网 发布:军爷捏脸数据 编辑:程序博客网 时间:2024/05/21 23:34
本教程是numpy快速入门教程的最后一篇,在这篇文章中,我将会介绍到一些关于numpy的快捷操作以及numpy的广播。
一、获取和修改数组的值
1、根据下标获取和修改数组的值
import numpy as np#numpy修改数组值得快捷操作if __name__ == "__main__": a = np.array([[1,2,3],[4,5,6],[7,8,9]]) #创建获取数组的指定列的下标 col_index = np.array([1,2,0]) #根据所选的列下标数组获取数组中的元素,np.arrage(3),会产生一个[0,1,2]的数组 result1 = a[np.arange(3),col_index] print(result1) #[2 6 7] #修改指定下标位置的元素值 a[np.arange(3), col_index] += 6 print(a) ''' [[ 1 8 3] [ 4 5 12] [13 8 9]] '''
2、根据一个bool类型的数组来获取数组的值
''' 通过一个boolean类型的数组来选择数组中的元素 ''' d = np.array([[5,1,3,4],[6,8,9,1],[10,4,2,1]]) #选出数组中大于3的元素 bool_con = d > 3 #获取满足条件的元素 d_con = d[bool_con] print(d_con) #[ 5 4 6 8 9 10 4] print(d[d > 3]) #[ 5 4 6 8 9 10 4]
二、numpy的数据类型
import numpy as npif __name__ == "__main__": ''' numpy提供了许多的数据类型,在创建数组没有指定数据类型,numpy会提供了一个默认的数据类型 ''' a = np.array([1,2,3]) print(a.dtype) #int32 b = np.array([1.1,2.0,3.0]) print(a.dtype) #int32 c = np.array([1,2,3],dtype=np.int64) print(c.dtype) #int64
三、numpy数组的基本操作
1、数组之间的加、减、乘、除
import numpy as npif __name__ == "__main__": #创建两个数组,指定数组的数据类型为float32 x = np.array([[1,2],[3,4]],dtype=np.float32) y = np.array([[5,6],[7,8]],dtype=np.float32) #数组之间的加法 add1 = x + y add2 = np.add(x,y) print(add1) ''' [[ 6. 8.] [ 10. 12.]] ''' print(add2) ''' [[ 6. 8.] [ 10. 12.]] ''' #数组之间的减法 subxy1 = x - y subxy2 = np.subtract(x,y) print(subxy1) ''' [[-4. -4.] [-4. -4.]] ''' print(subxy2) ''' [[-4. -4.] [-4. -4.]] ''' #数组之间的乘法 mulxy1 = x * y mulxy2 = np.multiply(x,y) print(mulxy1) ''' [[ 5. 12.] [ 21. 32.]] ''' print(mulxy2) ''' [[ 5. 12.] [ 21. 32.]] ''' #数组之间的除法 divxy1 = x/y divxy2 = np.divide(x,y) print(divxy1) ''' [[ 0.2 0.33333334] [ 0.42857143 0.5 ]] ''' print(divxy2) ''' [[ 0.2 0.33333334] [ 0.42857143 0.5 ]] ''' #求数组的平方根 sqrtx = np.sqrt(x) print(sqrtx) ''' [[ 1. 1.41421354] [ 1.73205078 2. ]] '''
2、数组之间的点乘
#数组之间的点乘,注意左乘和右乘的区别,注意两个数组点乘的条件是前一个矩阵的列等于后一个矩阵的行 # 创建两个数组,指定数组的数据类型为float32 x = np.array([[1, 2], [3, 4]], dtype=np.float32) y = np.array([[5, 6], [7, 8]], dtype=np.float32) dotxy1 = np.dot(x,y) #等价于x.dot(y) print(dotxy1) ''' [[ 19. 22.] [ 43. 50.]] 计算过程 19 = 1*5 + 2*7 22 = 1*6 + 2*8 43 = 3*5 + 4*7 50 = 3*6 + 4*8 ''' dotxy2 = np.dot(y,x) #等价于y.dot(x) print(dotxy2) ''' [[ 23. 34.] [ 31. 46.]] 计算过程 23 = 5*1 + 6*3 34 = 5*2 + 6*4 31 = 7*1 + 8*3 46 = 7*2 + 8*4 '''
3、数组求和
#数组求和函数 x = np.array([[1, 2], [3, 4]], dtype=np.float32) #求所有数组元素的和 sum1 = np.sum(x) print(sum1) #10.0 #求数组相同列之间元素的和 sum2 = np.sum(x,axis=0) print(sum2) #[ 4. 6.] #求数组相同行之间元素的和 sum3 = np.sum(x,axis=1) print(sum3) #[ 3. 7.]
4、矩阵的转置
#求矩阵的转置,将矩阵的行变成列,列变成行 x = np.array([[1, 2], [3, 4]], dtype=np.float32) print(x) ''' [[ 1. 2.] [ 3. 4.]] ''' transposition_x = x.T ''' [[ 1. 3.] [ 2. 4.]] ''' print(transposition_x)
四、数组的广播
import numpy as np#广播'''广播是numpy提供的一个非常重要的技巧对于操作不同大小的矩阵1、如果两个数组的阶不相同,将低阶的数组大小转换成与高阶的大小相同2、如果两个数组的维度相同或者其中一个数组的维度为13、数组在所有的维度上都可以进行广播4、经过广播之后的两个数组,数组的大小等于维度最大的那个5、如果一个数组的维度为1,而另一个数组的维度是任意的,那么这个维度为1的数组,会复制自己的元素达到与另一个数组拥有相同的维度'''if __name__ == "__main__": a = np.array([[1,2,3],[4,5,6],[7,8,9]]) v = np.array([1,0,1]) #给矩阵a的每一行都加上v,在执行下面代码的时候,numpy会自动调用广播 #将矩阵v先扩展成为[[1,0,1],[1,0,1],[1,0,1]]然后再与矩阵a做加法 b = a +v print(b) ''' [[ 2 2 4] [ 5 5 7] [ 8 8 10]] ''' v1 = np.array([2]) b1 = a + v1 print(b1) ''' [[ 3 4 5] [ 6 7 8] [ 9 10 11]] ''' #并不是所有的不同维度数组之间的操作都可以使用广播 v2 = np.array([1,2]) b2 = a + v2 #ValueError: operands could not be broadcast together with shapes (3,3) (2,) print(b2)
阅读全文
0 0
- numpy快速入门教程(二)
- Numpy快速入门教程(二):数据类型,数组计算,Broadcasting机制
- Numpy快速入门教程(三):SciPy,Matplotlib
- numpy快速入门教程
- Numpy快速入门教程(一):数组创建与数组访问
- Numpy 入门教程(1)
- Numpy 入门教程(2)
- Numpy 入门教程(1)
- Numpy 入门教程(2)
- Numpy 入门教程(1)
- objective-c快速入门教程(二)
- QT Creator 快速入门教程 读书笔记(二)
- Yii快速入门教程二
- Numpy快速处理数据--结构数组(二)
- Numpy入门教程
- Numpy 入门教程
- Thrust快速入门教程(二)——Vector的使用
- Thrust快速入门教程(二)——Vector的使用
- 全国首个人工智能商业案例榜单:「AI最佳掘金案例年度评选」正式启动
- 深度学习系列之二:卷积神经网络 | 公开课
- 第3弹!CS231n 2017中文字幕视频:损失函数和优化
- ccf201709-2
- distinct-subsequences
- numpy快速入门教程(二)
- Educational Codeforces Round 33 (Rated for Div. 2)
- 模式识别(5)K-L变换和PCA在人脸识别中的应用
- 避免滑动tableView时NSTimer 暂停
- 火车票系统模拟
- python清屏
- 人工智能从入门到精通(5)
- 一 蓝牙概述
- 【NOIP2012普及组】文化之旅