矩阵和numpy

1 什么是矩阵

数学上,一个m×n矩阵是一个由mn列元素排列成的矩形阵列。矩阵里的元素可以是数字、符号或数学式。以下是一个由6个数字元素构成的2行3列的矩阵:

(1)矩阵加法

大小相同(行数列数都相同)的矩阵之间可以相互加减,具体是对每个位置上的元素做加减法.


矩阵和numpy_第1张图片
(2)矩阵乘法

数乘:标量c与矩阵A的数乘:cA的每个元素是A的相应元素与c的乘积

标准乘法:两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。

矩阵的乘法满足结合律和对矩阵加法的分配律(左分配律和右分配律):

  • 结合律:(AB)C = A(BC)
  • 分配律:(A+B)C = AC + BC
(3)标记

将一些元素排列成若干行,每行放上相同数量的元素,就是一个矩阵。这里说的元素可以是数字,例如以下的矩阵:

矩阵和numpy_第2张图片

一个矩阵A从左上角数起的第i行第j列上的元素称为第i,j项,在上述例子中A[4,3] = 7

(4)点乘

以Numpy为例,使用array时,运算符 * 用于计算数量积(点乘),函数 dot() 用于计算矢量积(叉乘),例子如

import numpy as np
 
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
 
print 'a * b = \n', a * b
print 'np.dot(a, b) = \n', np.dot(a, b)

运行结果为:
a * b = 
[[ 5 12]
 [21 32]]
np.dot(a, b) = 
[[19 22]
 [43 50]]

注意np.array生成的二维数组就相当于矩阵。

(5) 转置
矩阵和numpy_第3张图片

下面附上一段matlab的转置给大家理解

>> a=rand(3)
a =
    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575
>> b=a'
b =
    0.8147    0.9058    0.1270
    0.9134    0.6324    0.0975
    0.2785    0.5469    0.9575

(6)逆矩阵
A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称BA的逆矩阵,而A则被称为可逆矩阵。

验证两个矩阵互为逆矩阵


矩阵和numpy_第4张图片

按照矩阵的乘法满足:AB = BA
故A,B互为逆矩阵。
若矩阵A是可逆的,则A的逆矩阵是唯一的。

(7)行列式

矩阵和numpy_第5张图片

这一期我只简单介绍一下numpy

import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)   三行五列
>>> a.ndim
2   这是一个二维数组
>>> a.dtype.name
'int64'
>>> a.itemsize
8  int64  64/8 = 8  8位一个字节
>>> a.size
15
>>> type(a)

>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)

  • ndarray.dtype
    an object describing the type of the elements in the array. One can create or specify dtype’s using standard Python types. Additionally NumPy provides types of its own. numpy.int32, numpy.int16, and numpy.float64 are some examples.

今天就讲到这里,都是基础大家要下去慢慢消化。

你可能感兴趣的:(矩阵和numpy)