numpy 基础常见用法总结

前期准备

使用numpy需要您先

pip install numpy

如果下载速度太慢,请看我另一篇博客: pip镜像管理和npm镜像管理

然后每次使用numpy都需要import 一下,以下默认都有

import numpy as np



1. 构造numpy数组

例子1: np.array

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)

运行结果:
运行结果

例子2: np.arange

a = np.arange(15).reshape(3,5)
print(a)

运行结果:
在这里插入图片描述

例子3:np.arange

#起点,终点,步长
a =  np.arange(10, 50, 5)
print(a)

运行结果:
在这里插入图片描述

tips: numpy转成列表只需要list(a) 即可返回转换后的列表。



例子4: 创建特殊数组

  • np.zeros(), 如果是参数是一个数字,那么就是生成一维度的全0数组,如果是多维的全0数组,则参数是元组。如np.zeros(3) 和 np.zeros((2, 5))
  • np.ones(), 同上,区别就是这个是全1数组
  • np.eye(), 单位矩阵,传入的参数是一个数字,如np.eye(5), 生成5 × 5的单位矩阵。
  • np.zeros_like() , 参数是一个numpy数组,生成的数组维度和传入参数的数组维度一样
  • np.ones_like(), 参数是一个numpy数组,生成的数组维度和传入参数的数组维度一样
  • np.diag(), 对角矩阵,参数是一个列表,传入的列表的元素是生成的对角矩阵的元素。
  • np.hamming(), 海明数组。
a = np.diag([6, 8, 10])
print(a)

运行结果:
在这里插入图片描述



例子5:np.random.randint()

np.random.randint(0,50,5)  

在这里插入图片描述
可见生成的是5个0到50之间的元素组成的numpy数组。(左闭右开)




2. 查看数组属性

  • a.shape 查看形状
  • a.ndim 查看维度
  • a.itemsize 查看每个元素在内存中所占据的字节数
  • a.size 查看有多少个元素

看下面的例子:

import numpy as np

a = np.arange(15).reshape(3, 5)
print(a)
print("a.shape: ", a.shape)
print("a.ndim: ", a.ndim)
print("a.itemsize", a.itemsize)
print("a.size: ", a.size)

运行结果:
在这里插入图片描述



3. numpy向量运算

他们都是对numpy数组中的元素逐个操作的,我们看个例子就明白了。

逐个元素运算

我们先给两个数组:

a = np.array([20,30,40,50])
b = np.arange(1, 5)

在这里插入图片描述

然后看看四则运算:

print('a + b: ', a + b)
print('a - b: ', a - b)
print('a * b: ', a * b)
print('a / b: ', a / b)
print('a // b: ', a // b)

在这里插入图片描述
再看看平方:

print('b ** 2: ', b ** 2)

在这里插入图片描述



向量运算

先给两个数组:

A = np.array([[1,1],
              [0,1]])
B = np.array( [[2,0],
               [3,4]] )

我们知道对应元素相乘是 A * B, 但是矩阵乘法是 A @ B, 或者 A.dot(B) , np.dot(A, B)
看下面的完整例子:

import numpy as np

A = np.array([[1, 1],
              [0, 1]])
B = np.array([[2, 0],
              [3, 4]])
print("A:\n", A)
print("B:\n", B)
print('A @ B:\n', A @ B)
print('A.dot(B):\n', A.dot(B))
print('np.dot(A, B):\n', np.dot(A, B))

在这里插入图片描述


4. numpy常用一维数学函数

以下函数参数都为np数组

  • 三角函数:np.sin()、np.cos()、np.tan()
  • 常见数学运算: np.exp(), np.log(), np.log10()
  • np.around() 函数返回指定数字的四舍五入值。
  • np.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。
  • np.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。
  • np.abs() 返回的数组的元素类型为整数
  • np.fabs() 返回的数组的元素类型为浮点数



5. numpy常用统计方法:

先给个数组

a = np.random.random((4, 5))

在这里插入图片描述由于该函数随机生成数组,故每一次都会不一样(超级小的概率会一样)。

b.sum()  # 求和
b.max() # 求最大值
b.min() # 求最小值
np.mean(b) # 求均值
np.std(b) # 求方差
np.var(b) # 求标准差

在这里插入图片描述

然后如果是想要对下标操作的话,可用 argmax, argmin, argsort 返回相应的下标。并可用axis参数, 如 np.argmax(a, axis=0) #axis=0代表往跨行(down),而axis=1代表跨列(across),设axis=i,则沿着第i个下标变化的方向进行操作!



5. numpy线性代数

例子1: 求解方阵的特征值和特征向量.

[ 1 5 9 3 2 8 5 7 4 ] (1) \begin{bmatrix} 1 & 5 & 9 \\ 3 & 2 & 8 \\ 5 & 7 & 4 \end{bmatrix} \tag{1} 135527984(1)

求解代码如下:

import numpy as np
array = np.array([[1, 5, 9], [3, 2, 8], [5, 7, 4]])
r1, r2 = np.linalg.eig(array)
# 特征值
print(r1)
# 特征向量
print(r2)

运行结果:
运行结果



例子2: 求解矩阵行列式

"""
numpy 计算行列式子
"""
import numpy as np

# a = [[1, 5, 9],
#      [3, 2, 8],
#      [5, 7, 4]]
a = [[1, 5],
     [2, 4]]
a = np.array(a)
# 行列式
det = np.linalg.det(a)
print(det)

程序输出结果:
结果
补充一下二维和三维的行列式值。
二维矩阵行列式
三维矩阵行列式



例子3: 求解线性方程组

{ x + y = 10 2000 x + 1500 y = 18000 \left\{ \begin{array}{l} x+y=10 \\ 2000x+1500y=18000 \end{array} \right. { x+y=102000x+1500y=18000

求解代码入下:

import numpy as np
A = np.array([[1, 1], [2000, 1500]])
B = np.array([10, 18000])
result = np.linalg.solve(A, B)
print(result)

运行结果:
运行结果
就是方程组的解为
{ x = 6 y = 4 \left\{ \begin{array}{l} x=6 \\ y=4 \end{array} \right. { x=6y=4



例子4: 求向量的长度

比如求向量 [3,4]的长度

import numpy as np
np.linalg.norm([3, 4])

输出结果就是 5.0.



例子5: 奇异值分解

对下列矩阵进行奇异值分解
[ 5 6 9 3 8 4 ] (2) \begin{bmatrix} 5 & 6 & 9 \\ 3 & 8 & 4 \\ \end{bmatrix} \tag{2} [536894](2)
代码如下:

import numpy as np
A = np.array([[5, 6, 9], [3, 8, 4]])
p, sigma, q = np.linalg.svd(A)
print(p)
print(sigma)
print(q)

运行结果:
奇异值分解
这里呢, A等于三个矩阵的内积
A = p ⋅ s i g m a ⋅ q A = p \cdot sigma \cdot q A=psigmaq
加入A是一个 m × n 的矩阵,那么p, sigma, q的维度分别是
m × m, m × n, n × n 。

p p T = I p \mathbf{p}^\mathsf{T} = I ppT=I
q q T = I q \mathbf{q}^\mathsf{T} = I qqT=I



例子6: 角度和弧度转换

import numpy as np
# 结果90
np.rad2deg(np.pi/2)
# 结果1.5707963267948966
np.deg2rad(90)

猜你喜欢

转载自blog.csdn.net/weixin_43850253/article/details/107810759
今日推荐