怎么用numpy生成两个2 * 2矩阵,并计算矩阵乘积?

关注者
4
被浏览
30,643

5 个回答

1.创建矩阵

使用Python的列表可以创建一个NumPy的二维数组或矩阵),
>>>  import numpy as np
>>> data = np.array([[1, 2], [3, 4], [5, 6]]) 
array([[1, 2], 
       [3, 4], 
       [5, 6]])

2.矩阵的索引和切片

>>> data[0, 1] 
>>> data[1:3] #等价data[1:3,:]
array([[3, 4], 
       [5, 6]]) 
>>> data[0:2, 0] 
array([1, 3])

3.矩阵的聚合运算

>>> data.max() 
>>> data.min() 
>>> data.sum() 
21

聚合运算不但能够聚合矩阵中的所有值,也可以使用axix参数来对指定的行或列进行聚合运算,如:

>>> data = np.array([[1, 2], [5, 3], [4, 6]]) 
array([[1, 2],
       [5, 3], 
       [4, 6]]) 
>>> data.max(axis=0) 
array([5, 6]) 
>>> data.max(axis=1) 
array([2, 5, 6])

4.矩阵的加减乘除运算

>>> data = np.array([[1, 2], [3, 4]]) 
>>> ones = np.array([[1, 1], [1, 1]]) 
>>> data + ones 
array([[2, 3], 
       [4, 5]]) 

也可以在不同尺寸的矩阵上执行这些算术运算,但其中一个矩阵必须只有一行或只有一列,在NumPy中会使用广播运算的规则来执行这些算术运算,如:

>>> data = np.array([[1, 2], [3, 4], [5, 6]]) 
>>> ones_row = np.array([[1, 1]]) 
>>> data + ones_row 
array([[2, 3], 
       [4, 5], 
       [6, 7]])

5.矩阵的打印

NumPy在打印矩阵时,是从右向左循环打印的,即先打印最后面的那个轴,最后打印最前面的那个轴,如:

>>> np.ones((4, 3, 2)) 
array([[[1., 1.], 
        [1., 1.], 
        [1., 1.]], 
       [[1., 1.], 
        [1., 1.], 
        [1., 1.]], 
       [[1., 1.], 
        [1., 1.], 
        [1., 1.]], 
      [[1., 1.], 
       [1., 1.], 
       [1., 1.]]])

6.矩阵的初始化

通常我们希望NumPy能够初始化数组,NumPy提供了ones()、zeros()函数,以及生成随机数的random.Generator类来初始化数组,如:

>>> np.ones(3) 
array([1., 1., 1.]) 
>>> np.zeros(3) 
array([0., 0., 0.]) 
# the simplest way to generate random numbers 
>>> rng = np.random.default_rng(0) 
>>> rng.random(3) #随机数,与你的结果可能不同
array([0.63696169, 0.26978671, 0.04097352])

给定一个表示矩阵维度的整数元组,也可以使用ones()、zeros()、random()函数创建一个二维数组,如:

>>> np.ones((3, 2)) 
array([[1., 1.], 
       [1., 1.], 
       [1., 1.]]) 
>>> np.zeros((3, 2)) 
array([[0., 0.],