-
numpy的简介
numpy是python中科学计算的基础包。他是一个python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运算和随机模拟等 -
numpy和pandas的安装
pip install numpy -
numpy
-
导包
import numpy as np -
numpy的属性
代码import numpy as np array = np.array([[1,2,3], [2,3,4]]) print(array) #打印矩阵 print('number of dim',array.ndim) #输出矩阵的维度 print('shape:',array.shape) #输出矩阵的形状 print('size:',array.size) #输出矩阵中的元素个数
输出
[[1 2 3] [2 3 4]] number of dim 2 shape: (2, 3) size: 6
-
numpy的创建
代码import numpy as np a = np.array([2,3,4],dtype=np.float32) #创建一维向量 #dtype的类型可以有 np.float32 np.float np.int32 np.int b = np.array([[1,2,3], [2,3,4]]) #创建二维向量 c = np.zeros((3,4)) #创建三行四列全为0的矩阵 d = np.ones((3,4)) #创建三行四列全为1的矩阵 e = np.empty((3,4)) #创建三行四列值接近0的矩阵 f = np.arange(10,20,2) #创建起始值为10,终止值为20(但不包括20),步长为2的向量 g = np.arange(12).reshape(3,4) #创建一个数位为12位的三行四列的矩阵 h = np.linspace(1,10,5) #创建一个起始值为1,中止值为10的,5段的数列 print(a) print(b) print(c) print(d) print(e) print(f) print(g) print(h)
输出
[2. 3. 4.] [[1 2 3] [2 3 4]] [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]] [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]] [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]] [10 12 14 16 18] [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [ 1. 3.25 5.5 7.75 10. ]
-
numpy基本运算
代码:import numpy as np a = np.array([10,20,30,40]) b = np.arange(4) c = a + b #加 print(c) c = a - b #减 print(c) c = b**2 #幂运算 print(c) c = 10*np.sin(a) #三角函数 sin() cos() tan() 反三角函数 arcsin() arccos() arctan() print(c) print(b<3) #判断b中的每一个元素是否小于3 a = np.array([[1,1], [0,1]]) b = np.arange(4).reshape((2,2)) c = a * b #矩阵中的每一个元素相乘 c_dot = np.dot(a,b) #矩阵相乘 另一种形式 c_dot = a.dot(b) print(c) print(c_dot) a = np.random.random((2,4)) #生成一个2行4列的随机数字 print(a) print(np.sum(a,axis = 0)) #进行求和 axis = 0表示的是对列进行操作 axis = 1表示的是对行进行操作 print(np.min(a)) #求最小值 print(np.max(a)) #求最大值 A = np.arange(2,14).reshape((3,4)) print(A) print(np.argmin(A)) #求最小值的索引 print(np.argmax(A)) #求最大值的索引 print(np.mean(A)) #求平均值 print(np.average(A)) #求平均值 print(np.median(A)) #求中位数 print(np.cumsum(A)) #逐步的累加 print(np.diff(A)) #求相邻两个数的差 print(np.nonzero(A)) #输出值不为0的两个数组内容分别为行和列 print(np.sort(A)) #进行逐行排序 print(np.transpose(A)) #进行矩阵的转置 print(np.clip(A,5,9)) #将数值小于5的置为5,大于9的置为9,中间值不管
输出:
[10 21 32 43] [10 19 28 37] [0 1 4 9] [-5.44021111 9.12945251 -9.88031624 7.4511316 ] [ True True True False] [[0 1] [0 3]] [[2 4] [2 3]] [[0.14637532 0.77514504 0.40537369 0.58750185] [0.17383035 0.83159482 0.18020054 0.99902121]] [0.32020567 1.60673986 0.58557422 1.58652306] 0.14637532169737644 0.9990212129900695 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13]] 0 11 7.5 7.5 7.5 [ 2 5 9 14 20 27 35 44 54 65 77 90] [[1 1 1] [1 1 1] [1 1 1]] (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13]] [[ 2 6 10] [ 3 7 11] [ 4 8 12] [ 5 9 13]] [[5 5 5 5] [6 7 8 9] [9 9 9 9]]
-
numpy索引
代码:import numpy as np A = np.arange(3,15) print(A[3]) #输出第4个数字 A = np.arange(3,15).reshape((3,4)) print(A[2]) #输出第三行 print(A[2,:]) print(A[1][1]) #输出第二行第二列的数值 print(A[1,1]) print(A[:,1]) #返回第一列的所有数 print(A[1,1:3]) #返回第一行 第一到第三列的数值 for row in A: print(row) #迭代行 for column in A.T: print(column) #迭代列 print(A.flatten()) #将A转换成一维的数组 for item in A.flat: print(item) #迭代每一个项
输出:
6 [11 12 13 14] 8 [ 4 8 12] [8 9] [3 4 5 6] [ 7 8 9 10] [11 12 13 14] [ 3 7 11] [ 4 8 12] [ 5 9 13] [ 6 10 14] [ 3 4 5 6 7 8 9 10 11 12 13 14] 3 4 5 6 7 8 9 10 11 12 13 14
-
numpy中array的合并和分割
-
合并
代码:import numpy as np A = np.array([1,1,1]) B = np.array([2,2,2]) C = np.vstack((A,B)) #将A和B进行垂直合并 D = np.hstack((A,B)) #将A和B进行水平合并 print(C) print(D)
输出:
[[1 1 1] [2 2 2]] [1 1 1 2 2 2]
-
分割
代码:import numpy as np A = np.arange(12).reshape(3,4) print(A) print(np.split(A,2,axis=1)) #将A按列分成两块 第一个参数表示数组,第二个参数表示分割的块数,第三个参数是维度 这个函数智能进行均等分块 不能进行不均等分块 print(np.split(A,3,axis=0)) print(np.array_split(A,3,axis=1)) #将A按列进行不等量的分割 print(np.vsplit(A,3)) #将A进行纵向分割成3块 print(np.hsplit(A,2)) #将A进行横向分割成2块
输出:
[[ 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], [ 6], [10]]), array([[ 3], [ 7], [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]])]
-
-
copy和deep copy
代码:import numpy as np #copy a、b、c、d都只指向同一个内容 a = np.arange(4) b = a c = a d = b a[0] = 11 print(a) print(b) print(c) print(d) #deep copy a、b分别指向不同的内容 a = np.arange(4) b = a.copy() a[0:3] = [11,22,33] print(a) print(b)
输出:
[11 1 2 3] [11 1 2 3] [11 1 2 3] [11 1 2 3] [11 22 33 3] [0 1 2 3]
-
下面的是笔者的微信公众号,欢迎关注,会持续更新c++、python、tensorflow、机器学习、深度学习、计算机视觉等系列文章。
如果你对JAVA方面感兴趣,可以关注下面JAVAERS公众号,陪你一起学习,一起成长,一起分享JAVA路上的诗和远方。在公众号里面都是JAVA这个世界的朋友,公众号每天会有技术类文章,面经干货,也有进阶架构的电子书籍,如Spring实战、SpringBoot实战、高性能MySQL、深入理解JVM、RabbitMQ实战、Redis设计与实现等等一些高质量书籍,关注公众号即可领取哦。