numpy 包用法简单总结
2018-02-08 11:54
423 查看
在文件头部引用numpy包
创建numpy数组
创建一维数组
创建多维数组
利用arange zeros ones empty创建数组
numpy数组的基本操作
数据类型
数组的转置
数组的运算
数组索引与切片
基本方法
切片
布尔索引
其他索引方式
生成数组的副本
官方教程
transpose函数使我们能够得到数组的更灵活的转置形式,可以看到对于三维数组的转置.T的作用相当于.transpose((2,1,0)),由此可以推断出更高维数组的情况。另外.T和.transpose都不会改变数组本身。
做矩阵乘法时要注意矩阵维度是否匹配,但若数组只有一个维度,则无需转置即可求内积。
采用nparray1=nparray[0]的方式生成的nparray1并不是nparray[0]的副本,而是与nparray[0]共用同一地址的数组,当nparray1的值改变时,nparray[0]也随之改变;采用nparray2 = nparray[0].copy()的方式生成的nparray2是nparray[0]的一个副本,nparray2改变时,nparray[0]不会随之改变。
创建numpy数组
创建一维数组
创建多维数组
利用arange zeros ones empty创建数组
numpy数组的基本操作
数据类型
数组的转置
数组的运算
数组索引与切片
基本方法
切片
布尔索引
其他索引方式
生成数组的副本
官方教程
在文件头部引用numpy包
为了方便引用一般将numpy引用为np:import numpy as np
创建numpy数组
创建一维数组
nparray = np.array([1,2,3,4,5,6]) print (nparray) # [1 2 3 4 5 6] print (nparray.dtype) # int32 print (nparray.shape) # (6,) nparray = np.array([[1,2,3,4,5,6]]) print (nparray.shape) # (1, 6)
创建多维数组
nparray = np.array([[1.1, 2.2], [3.3, 4.4], [5.5, 6.6]]) print (nparray) # [[ 1.1 2.2] # [ 3.3 4.4] # [ 5.5 6.6]] print (nparray.dtype) # float64 nparray = np.array([[[6, 6, 6, 6], [6, 6, 6, 6]], [[6, 6, 6, 6], [6, 6, 6, 6]], [[6, 6, 6, 6], [6, 6, 6, 6]]]) print (nparray) #[[[6 6 6 6] # [6 6 6 6]] # # [[6 6 6 6] # [6 6 6 6]] # # [[6 6 6 6] # [6 6 6 6]]] print (nparray.ndim) # 3 print (nparray.shape) # (3, 2, 4)
利用arange, zeros, ones, empty创建数组
nparray = np.arange(6) print (nparray) # [0 1 2 3 4 5] nparray = np.arange(1, 7) print (nparray) # [1 2 3 4 5 6] nparray = np.arange(0, 6, 2) print (nparray) # [0 2 4] nparray = np.arange(6).reshape(2, 3) print (nparray) # [[0 1 2] # [3 4 5]] nparray = np.zeros(6) print (nparray) # [ 0. 0. 0. 0. 0. 0.] nparray = np.ones([2, 3]) print (nparray) # [[ 1. 1. 1.] # [ 1. 1. 1.]] nparray = np.empty([3, 2]) print (nparray) # [[ 0. 0.] # [ 0. 0.] # [ 0. 0.]]
numpy数组的基本操作
数据类型
nparray = np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6], dtype = np.int64) print (nparray) # [1 2 3 4 5 6] print (nparray.dtype) # int64 nparray = nparray.astype(np.float64) print (nparray) # [ 1. 2. 3. 4. 5. 6.] print (nparray.dtype) # float64
数组的转置
nparray = np.arange(6).reshape(2, 3) print (nparray.T) # [[0 3] # [1 4] # [2 5]] print (nparray) # [[0 1 2] # [3 4 5]] nparray = np.arange(24).reshape(3, 2, 4) print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 23]]] print (nparray.transpose(0, 2, 1)) # [[[ 0 4] # [ 1 5] # [ 2 6] # [ 3 7]] # # [[ 8 12] # [ 9 13] # [10 14] # [11 15]] # # [[16 20] # [17 21] # [18 22] # [19 23]]] print (nparray.transpose(1, 0, 2)) # [[[ 0 1 2 3] # [ 8 9 10 11] # [16 17 18 19]] # # [[ 4 5 6 7] # [12 13 14 15] # [20 21 22 23]]] print (nparray.transpose(1, 2, 0)) # [[[ 0 8 16] # [ 1 9 17] # [ 2 10 18] # [ 3 11 19]] # # [[ 4 12 20] # [ 5 13 21] # [ 6 14 22] # [ 7 15 23]]] print (nparray.transpose(2, 0, 1)) # [[[ 0 4] # [ 8 12] # [16 20]] # # [[ 1 5] # [ 9 13] # [17 21]] # # [[ 2 6] # [10 14] # [18 22]] # # [[ 3 7] # [11 15] # [19 23]]] print (nparray.transpose(2, 1, 0)) # [[[ 0 8 16] # [ 4 12 20]] # # [[ 1 9 17] # [ 5 13 21]] # # [[ 2 10 18] # [ 6 14 22]] # # [[ 3 11 19] # [ 7 15 23]]] print (nparray.T) # [[[ 0 8 16] # [ 4 12 20]] # # [[ 1 9 17] # [ 5 13 21]] # # [[ 2 10 18] # [ 6 14 22]] # # [[ 3 11 19] # [ 7 15 23]]] print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 e8e9 23]]]
transpose函数使我们能够得到数组的更灵活的转置形式,可以看到对于三维数组的转置.T的作用相当于.transpose((2,1,0)),由此可以推断出更高维数组的情况。另外.T和.transpose都不会改变数组本身。
数组的运算
nparray = np.arange(6).reshape(2, 3) nparray1 = np.ones(6).reshape(2, 3) print (nparray) # [[0 1 2] # [3 4 5]] print (nparray1) # [[ 1. 1. 1.] # [ 1. 1. 1.]] print (nparray*2) # [[ 0 2 4] # [ 6 8 10]] print (nparray**2) # [[ 0 1 4] # [ 9 16 25]] print (nparray + nparray1) # [[ 1. 2. 3.] # [ 4. 5. 6.]] print (nparray > 2) # [[False False True] # [ True True True]] print (np.dot(nparray, nparray1.T)) # [[ 3. 3.] # [ 12. 12.]] print (np.dot(nparray, nparray1)) # ValueError: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0) nparray = np.arange(6) print (nparray) # [0 1 2 3 4 5] print (nparray.T) # [0 1 2 3 4 5] print (np.dot(nparray, nparray.T)) # 55 print (np.dot(nparray, nparray)) # 55 nparray = np.arange(6).reshape(1, 6) print (nparray) # [[0 1 2 3 4 5]] print (nparray.T) # [[0] # [1] # [2] # [3] # [4] # [5]] print (np.dot(nparray, nparray.T)) # [[55]] print (np.dot(nparray.T, nparray)) # [[ 0 0 0 0 0 0] # [ 0 1 2 3 4 5] # [ 0 2 4 6 8 10] # [ 0 3 6 9 12 15] # [ 0 4 8 12 16 20] # [ 0 5 10 15 20 25]] print (np.dot(nparray, nparray)) # ValueError: shapes (1,6) and (1,6) not aligned: 6 (dim 1) != 1 (dim 0)
做矩阵乘法时要注意矩阵维度是否匹配,但若数组只有一个维度,则无需转置即可求内积。
数组索引与切片
基本方法
nparray = np.arange(24).reshape(3, 2, 4) print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 23]]] print (nparray[0]) # [[0 1 2 3] # [4 5 6 7]] print (nparray[0][1]) # [4 5 6 7] print (nparray[0,1]) # [4 5 6 7] print (nparray[0][1][2]) # 6 print (nparray[0,1,2]) # 6 print (nparray[[0, 1], [0, 1]]) # [[ 0 1 2 3] # [12 13 14 15]] print (nparray[[0, 1], [0, 1], [2, 3]]) # [ 2 15]
切片
nparray = np.arange(36).reshape(4, 3, 3) print (nparray) # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8]] # # [[ 9 10 11] # [12 13 14] # [15 16 17]] # # [[18 19 20] # [21 22 23] # [24 25 26]] # # [[27 28 29] # [30 31 32] # [33 34 35]]] print (nparray[1:3]) # [[[ 9 10 11] # [12 13 14] # [15 16 17]] # # [[18 19 20] # [21 22 23] # [24 25 26]]] print (nparray[0:4:2]) # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8]] # # [[18 19 20] # [21 22 23] # [24 25 26]]] print (nparray[2:4, :2, -1:]) # [[[20] # [23]] # # [[29] # [32]]] nparray[2:4, :2, -1:] = -1 print (nparray) # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8]] # # [[ 9 10 11] # [12 13 14] # [15 16 17]] # # [[18 19 -1] # [21 22 -1] # [24 25 26]] # # [[27 28 -1] # [30 31 -1] # [33 34 35]]] nparray[2:4, :2, -1:] = [[[-2], [-3]], [[-4], [-5]]] print (nparray) # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8]] # # [[ 9 10 11] # [12 13 14] # [15 16 17]] # # [[18 19 -2] # [21 22 -3] # [24 25 26]] # # [[27 28 -4] # [30 31 -5] # [33 34 35]]] nparray[2:4, :2, -1] = [[-6, -7], [-8, -9]] print (nparray) # [[[ 0 1 2] # [ 3 4 5] # [ 6 7 8]] # # [[ 9 10 11] # [12 13 14] # [15 16 17]] # # [[18 19 -6] # [21 22 -7] # [24 25 26]] # # [[27 28 -8] # [30 31 -9] # [33 34 35]]]
布尔索引
nparray = np.arange(24).reshape(3, 2, 4) print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 23]]] nparray1 = nparray > 10 print (nparray1) # [[[False False False False] # [False False False False]] # # [[False False False True] # [ True True True True]] # # [[ True True True True] # [ True True True True]]] print (nparray1.dtype) # bool nparray1 = (nparray == 6)|(nparray == 8)|(nparray == 10) print (nparray1) # [[[False False False False] # [False False True False]] # # [[ True False True False] # [False False False False]] # # [[False False False False] # [False False False False]]] nparray2 = nparray[nparray1] print (nparray2) # [ 6 8 10] nparray2 = nparray[nparray1 == False] print (nparray2) # [ 0 1 2 3 4 5 7 9 11 12 13 14 15 16 17 18 19 20 21 22 23] nparray2 = nparray[~nparray1] print (nparray2) # [ 0 1 2 3 4 5 7 9 11 12 13 14 15 16 17 18 19 20 21 22 23]
其他索引方式
nparray = np.arange(24).reshape(3, 2, 4) print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 23]]] print (nparray[[0, 1]]) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]]] print (nparray[[0, 1]][[0]]) # [[[0 1 2 3] # [4 5 6 7]]] print (nparray[[0, 1][0]]) # [[0 1 2 3] # [4 5 6 7]] print (nparray[[0, 1]][0]) # [[0 1 2 3] # [4 5 6 7]] print (nparray[[0, 1]][:, [1]]) # [[[ 4 5 6 7]] # # [[12 13 14 15]]] print (nparray[[0, 1]][:, [1]][[0]]) # [[[4 5 6 7]]]
生成数组的副本
nparray = np.arange(24).reshape(3, 2, 4) print (nparray) # [[[ 0 1 2 3] # [ 4 5 6 7]] # # [[ 8 9 10 11] # [12 13 14 15]] # # [[16 17 18 19] # [20 21 22 23]]] nparray1 = nparray[0] print (nparray1) # [[0 1 2 3] # [4 5 6 7]] nparray2 = nparray[0].copy() print (nparray2) # [[0 1 2 3] # [4 5 6 7]] nparray1[0,0] = 100 print (nparray1) # [[100 1 2 3] # [ 4 5 6 7]] print (nparray[0]) # [[100 1 2 3] # [ 4 5 6 7]] nparray2[0,0] = 200 print (nparray2) # [[200 1 2 3] # [ 4 5 6 7]] print (nparray[0]) # [[100 1 2 3] # [ 4 5 6 7]]
采用nparray1=nparray[0]的方式生成的nparray1并不是nparray[0]的副本,而是与nparray[0]共用同一地址的数组,当nparray1的值改变时,nparray[0]也随之改变;采用nparray2 = nparray[0].copy()的方式生成的nparray2是nparray[0]的一个副本,nparray2改变时,nparray[0]不会随之改变。
官方教程
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html相关文章推荐
- TIM102数据手册核心部分翻译及简单的用法总结
- numpy的一些简单用法
- C和C++中static用法简单总结
- java Thread两种简单用法总结
- 简单的Java字符串用法总结
- const用法简单总结
- 2016年12月10日学习总结----C语言中exit的简单用法及与return的区别
- select函数用法简单总结
- Android学习总结(十三) ———— ListView 简单用法
- CocoaPods 简单用法总结
- 【Java】简单总结一下Java中printf()的用法
- C++ string 类的一些简单用法总结
- Intent用法简单总结
- 简单总结一下sqlserver中表变量和临时表的用法和区别
- 【Java】简单总结一下Java中printf()的用法
- numpy库用法总结
- numpy.array 操作简单总结
- MVC+MEF+UnitOfWork+EF架构,网站速度慢的原因总结!(附加ANTS Memory Profiler简单用法)
- Python之数组(array)使用方法总结与Numpy中的数组用法
- jackson简单用法总结