numpy数组跟python原生的数组不同
优势:因为底层是使用C语言直接实现,所以效率更快(但编写是python)
学习文章:https://blog.csdn.net/a373595475/article/details/79580734
基本概念:
NumPy数组的维度:指的是数组的轴数或数组的秩(rank)。
1 | [1,2,3] 一维 |
1 | import numpy as np |
创建数组
通过列表创建数组
1 | np.array([1,2,3]) |
1 | np.array([[1,2,3], |
1 | np.array([[[1,2,3], |
创建全为0的三维数组
1 | np.zeros((3,4)) |
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
创建全为1的三维数组
1 | np.ones((2,3,4)) |
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]][[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
创建任意大小的数组并填充指定数字
1 | np.full((2, 5), 2) |
[[2 2 2 2 2]
[2 2 2 2 2]]
arange创建一维等差数组
1 | np.arange(4) |
[0 1 2 3 4]
创建多维等差数组
1 | np.arange(6).reshape(2,3) |
[[0 1 2]
[3 4 5]]
使用arange
创建了一维等差数组,然后先reshape将数组重塑为形状(2,3)
创建单位矩阵
1 | np.eye(3) |
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
创建二维随机数组
1 | np.random.rand(2,3) |
[[0.09281844 0.90069456 0.02561579]
[0.75375864 0.12419854 0.76366864]]
创建二维随机整数数组(数值小于5)
1 | np.random.randint(5,size=(2,3)) |
[[0 1 1]
[4 3 0]]
数组运算
num 数组内 加
1 | a = np.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) |
30
[ 2 4 6 8 10]
[15 15]
mean 求平均值
1 | a = np.array([1, 2, 3, 4, 5]) |
3.0
tile 复制
1 | a = np.array([1, 2, 3, 4, 5]) |
[[1 2 3 4 5 1 2 3 4 5]]
argsort 返回大小排序后的下标
1 | numpy.argsort(a, axis=-1, kind='quicksort', order=None) |
1 | a = np.array([[3, 2, 1, 4, 5], [8, 2, 1, 4, 5]]) |
[[2 1 0 3 4]
[2 1 3 4 0]]
[[0 0 0 0 0]
[1 1 1 1 1]]
tip:这个下标是排列前的下标,以第二行为例子,可以对应着去看2->1,1->2,3->4,4->5,0->8(下标->数字)
一维数组加减乘除
tip:数组的加减乘除就是相对应位置上的元素加减乘除
1 | a = np.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) |
[[1 2 3 4 5]
[1 2 3 4 5]]
[[2 2 2 2 2]
[2 2 2 2 4]]
[[3 4 5 6 7]
[3 4 5 6 9]]
[[-1 0 1 2 3]
[-1 0 1 2 1]]
[[ 2 4 6 8 10]
[ 2 4 6 8 20]]
[[0.5 1. 1.5 2. 2.5 ]
[0.5 1. 1.5 2. 1.25]]
矩阵运算
矩阵乘法
np.dot(A, B) 是用于计算两个数组的矩阵乘法的函数。
1 | A = np.array([[1, 2], [3, 4]]) |
[[19 22]
[43 50]]
如果使用 np.mat 将二维数组准确定义为矩阵,就可以直接使用 * 完成矩阵乘法计算:
1 | A = np.mat([[1, 2], [3, 4]]) |
[[19 22]
[43 50]]
转置矩阵
1 | A = np.mat([[1, 2], [3, 4]]) |
[[1 2]
[3 4]]
[[1 3]
[2 4]]
矩阵求逆
1 | A = np.mat([[1, 2], [3, 4]]) |
[[-2. 1. ]
[ 1.5 -0.5]]
广播
介绍: 广播(broadcasting)是一种强大且灵活的机制,NumPy会自动调整数组的形状,以使其符合运算的要求。
1 | a = np.array([[1, 2, 3], |
[[ 2 4 6]
[ 5 7 9]
[ 8 10 12]]
[[1 2 3]
[1 2 3]
[1 2 3]]
[[ 2 4 6]
[ 5 7 9]
[ 8 10 12]]
索引的使用
1 | a = np.array([[1, 2, 3], |
1
[[1 2]
[4 5]]
[12 15 18]
[7 8 9]
类型与类型转换
1 | a = np.array([1.2, 2.1],dtype=np.float64) |
float64
[1 2]