Python学习之——2d Numpy基本用法
先引入相关的包:
import numpy as np
import matplotlib.pyplot as plt
1. 创建一个2D的Numpy数组
- 将一个list转化为一个Numpy数组
a = [[11, 12, 13], [21, 22, 23], [31, 32, 33]]
A = np.array(a)
A
输出:
array([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
- 使用ndim属性查看Numpy数组的维度数量
A.ndim
输出:
2
这里的2含义是:一个大list,里面会嵌套一层小list,共两层
- 使用属性shape返回一个tuple,该tuple里的每一个数字,分别代表了每一个维度里面的元素数量
A.shape
输出:
(3, 3)
- 使用size来获取Numpy array中所有元素的数量
A.size
输出:
9
2. 获取一个Numpy数组的不同元素的不同的方式
现有Numpy数组A:
2.1 获取某一个元素的两种方式
- 使用一个中括号
A[1,2]
输出:
23
- 使用两个中括号
A[1][2]
输出:
23
2.2 获取局部元素的两种方式
获取数组A第一行的前两列的数据
- 使用两个中括号+slicing
A[0][0:2]
输出:
array([11, 12])
获取数组A的前两行的第三列的数据
- 使用一个中括号+slicing的方式
A[0:2, 2]
输出:
array([13, 23])
3. Numpy数组的基本操作
3.1 Numpy数组的加法运算“+”
和矩阵的加法一致
X = np.array([[1, 0], [0, 1]])
Y = np.array([[2, 1], [1, 2]])
Z = X + Y
Z
输出:
array([[3, 1],
[1, 3]])
3.2 Numpy数组与一个常数相乘运算“*”
和矩阵与一个常数相乘的原理一致,即矩阵与一个常数相乘,那么矩阵中的每一个元素都扩大相应的倍数。
Y = np.array([[2, 1], [1, 2]])
Z = 2 * Y
Z
输出:
array([[4, 2],
[2, 4]])
3.3 Numpy数组之间的乘法运算——哈达玛积“*”
相当于矩阵的“点积运算”,即两个矩阵的对应位置的元素分别进行乘法。
X = np.array([[1, 0], [0, 1]])
Y = np.array([[2, 1], [1, 2]])
Z = X * Y
Z
输出:
array([[2, 0],
[0, 2]])
3.4 Numpy数组之间的乘法运算——相当于矩阵的乘法运算 “dot()方法”
Numpy数组的dot()方法相当于矩阵乘法的原理,即第一个矩阵的列数等于第二个矩阵的行数。
A = np.array([[0, 1, 1], [1, 0, 1]])
B = np.array([[1, 1], [1, 1], [-1, 1]])
Z = np.dot(A,B)
Z
输出:
array([[0, 2],
[0, 2]])
3.5 对Numpy数组里的每一个元素进行sin三角函数运算
下面代码中的Z就是array([[0, 2],
[0, 2]])
np.sin(Z)
array([[0. , 0.90929743],
[0. , 0.90929743]])
3.6 获取某一个Numpy数组的转置
通过调用Numpy数组的属性T来实现
C = np.array([[1,1],[2,2],[3,3]])
C.T
输出:
array([[1, 2, 3],
[1, 2, 3]])