Numpy 基础学习笔记
2017-11-18 18:42
537 查看
Numpy对矩阵的操作更加便捷,前一段时间的使用中,总会因为一些基础的东西模糊不清而出错,所以今天看了一遍莫烦 的numpy 教程。顺便做了笔记供之后查阅。
列表转
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
输出
Numpy 使用
基本使用
列表转numpy
矩阵
import numpy as np array = np.array([[1,2,3], [4,5,6]])
输出
[[1 2 3] [4 5 6]]
矩阵的信息
print('number of dim:' ,array.ndim) print('shape:',array.shape) print('size:',array.size)
输出
number of dim: 2 shape: (2, 3) size: 6
指定元素数据的类型
a = np.array([1,2,3],dtype=np.int) print(a.dtype) b = np.array([1,2,3],dtype=np.int64) print(b.dtype)
输出
int32 int64
创建一些特殊的矩阵
c = np.zeros((2,4)) print(c) d = np.ones((3,5)) print(d) e = np.arange(0,20,2).reshape((2,5)) print(e) f = np.linspace(1,10,4) print(f)
输出
[[ 0. 0. 0. 0.] [ 0. 0. 0. 0.]] [[ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.]] [[ 0 2 4 6 8] [10 12 14 16 18]] [ 1. 4. 7. 10.]
矩阵简单运算
a = np.array([10,20,30,40]) b = np.arange(4) print (a,b) print ('a-b:',a-b) print ('a+b:',a+b) print ('b^2:',b**2) print ('b<3:',b<3)
输出
[10 20 30 40] [0 1 2 3] a-b: [10 19 28 37] a+b: [10 21 32 43] b^2: [0 1 4 9] b<3: [ True True True False]
两种乘法运算
a = np.array([[1,1], [0,1]]) b = np.arange(4).reshape((2,2)) print(a) print(b) print('a*b: \n',a*b) print('a.dot(b): \n',a.dot(b))
输出
[[1 1] [0 1]] [[0 1] [2 3]] a*b: [[0 1] [0 3]] a.dot(b): [[2 4] [2 3]]
求和求大小
a = np.random.random((2,4)) print(a) print(np.sum(a)) print(np.max(a)) print(np.min(a)) print(np.sum(a,axis = 1)) # 行求和
输出
[[ 0.16971606 0.67080715 0.57505605 0.59053659] [ 0.94514567 0.24781893 0.28458866 0.82784495]] sum: 4.31151405263 max: 0.945145668017 min: 0.169716059936 行求和: [ 2.00611585 2.3053982 ]
其他运算
A = np.arange(2,14).reshape((3,4)) print(A) print('min index: ',np.argmin(A)) print('max index: ',np.argmax(A)) print('mean: ',np.mean(A)) print('median: ',np.median(A)) print('cumsum: ',np.cumsum(A)) # 累加求和 print('diff: \n',np.diff(A)) # 相邻求差
输出
[[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13]] min index: 0 max index: 11 mean: 7.5 median: 7.5 cumsum: [ 2 5 9 14 20 27 35 44 54 65 77 90] diff: [[1 1 1] [1 1 1] [1 1 1]]
排序 转置 截取
B = np.random.random((2,4)) print('sort:\n',np.sort(B)) #默认行排序 print('A.T:\n',A.T) print('A.transpose():\n',A.transpose()) print('np.clip(A,4,9):\n',np.clip(A,4,9))
输出
sort: [[ 0.00157543 0.15291127 0.65574215 0.73835591] [ 0.08381171 0.1036112 0.25088152 0.48191754]] A.T: [[ 2 6 10] [ 3 7 11] [ 4 8 12] [ 5 9 13]] A.transpose(): [[ 2 6 10] [ 3 7 11] [ 4 8 12] [ 5 9 13]] np.clip(A,4,9): [[4 4 4 5] [6 7 8 9] [9 9 9 9]]
数组索引操作
import numpy as np A = np.arange(3,15) print('A:\n',A) print('a[0]:',A[0]) B = np.arange(3,15).reshape((3,4)) print('B:\n',B) print('B[1]:',B[1]) print('B[1][2]:',B[1][2]) print('B[1,2]:',B[1,2]) # B[1,2]与B[1][2]等价 print('B[1,:]:',B[1,:]) print('B[1,1:3]:',B[1,1:3]) print('-------------------') for row in B: # 迭代行,迭代列可以转置后迭代行 print(row)
输出
A: [ 3 4 5 6 7 8 9 10 11 12 13 14] a[0]: 3 B: [[ 3 4 5 6] [ 7 8 9 10] [11 12 13 14]] B[1]: [ 7 8 9 10] B[1][2]: 9 B[1,2]: 9 B[1,:]: [ 7 8 9 10] B[1,1:3]: [8 9] ------------------- [3 4 5 6] [ 7 8 9 10] [11 12 13 14]
矩阵合并
主要包含vstack,
hstack,
concatenate三个函数
import numpy as np A = np.array([1,1,1]) B = np.array([2,2,2]) C = np.vstack((A,B)) D = np.hstack((A,B)) print('A:\n',A) print('B:\n',B) print('C:\n',C) print('D:\n',D) """---------------""" print('A:',A) print('A.T:',A.T) print('A.shape:',A.shape) print('A.T.shape:',A.T.shape) # 无法通过转置把序列别换维度 bb = A[np.newaxis,:] print('bb: \n',bb) print('bb.shape:',np.shape(bb)) cc = A[:,np.newaxis] print('cc: \n',cc) print('cc.shape:',np.shape(cc)) """-----------------""" A = np.array([[1,1,1,1]]) B = np.array([[2,2,2,2]]) E = np.concatenate((A,B),axis=0) print(E)
输出
A: [1 1 1] B: [2 2 2] C: [[1 1 1] [2 2 2]] D: [1 1 1 2 2 2] A: [1 1 1] A.T: [1 1 1] A.shape: (3,) A.T.shape: (3,) bb: [[1 1 1]] bb.shape: (1, 3) cc: [[1] [1] [1]] cc.shape: (3, 1) [[1 1 1 1] [2 2 2 2]]
分割
import numpy as np A = np.arange(12).reshape((3,4)) print('A:\n',A) print('------------------') print(np.split(A,2,axis=1)) print('------------------') print(np.vsplit(A,3)) print('------------------') print(np.hsplit(A,2))split(A,2))
输出
A: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] ------------------ [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])] ------------------ [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] ------------------ [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])]
数组拷贝
简单的=,是把两个变量指向同一个地址,变还其中的一个内容会影响另一个矩阵的内容。
import numpy as np a = np.array([0,1,2,3]) b = a a[0] = 100 print('b:\n',b) print('b is a?',b is a) print('----------------') c = a.copy() print('c before a change:',c) a[1] = 111 print('c after a change:',c)
输出
b: [100 1 2 3] b is a? True ---------------- c before a change: [100 1 2 3] c after a change: [100 1 2 3]
相关文章推荐
- numpy学习笔记1-基础
- Numpy基础学习笔记
- numpy 基础学习笔记(1)
- NumPy的学习笔记(二)——基础
- 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记
- numpy 基础学习笔记(2)
- python学习笔记(三)- numpy基础:array及matrix详解
- 神经网络与深度学习学习笔记:numpy基础
- numpy学习笔记二:numpy基础
- HTML基础学习笔记4
- 学习笔记:Java的一些基础小知识之JVM与GC
- [转]CoreJava学习笔记_Java语法基础
- Python 基础个人学习笔记
- 5.2.vue入门基础学习笔记-基础指令介绍(表单绑定v-model)
- Java 基础学习笔记之用for循环输出一个*号 1357的三角形
- C#学习笔记(有C,C++,JAVA语言基础)
- numpy基础学习大集合(二)
- 学习笔记—网页设计基础知识(一)
- Go语言基础语法学习笔记[3]
- JavaScript高级程序设计(第3版)学习笔记15——DOM基础