我爱编程

矩阵和numpy

2017-08-12  本文已影响54人  我是上帝可爱多

1 什么是矩阵

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

(1)矩阵加法

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


(2)矩阵乘法

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

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

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

(3)标记

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

一个矩阵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) 转置

下面附上一段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则被称为可逆矩阵

验证两个矩阵互为逆矩阵


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

(7)行列式

这一期我只简单介绍一下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)
<type 'numpy.ndarray'>
>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
<type 'numpy.ndarray'>

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

上一篇下一篇

猜你喜欢

热点阅读