对于多维矩阵,可以进行变形、加减乘除等操作,本节就来介绍常见的相关操作。
例如原来是 3×4 的矩阵,可以将其变成 6×2 的矩阵。内容不变,但是样子发生了改变。方法如下:
>>> x = np.arange(1, 7) # 一维矩阵 >>> x array([1, 2, 3, 4, 5, 6]) >>> y = x.reshape(2, 3) # 变成2行3列的二维矩阵 >>> y array([[1, 2, 3], [4, 5, 6]])
加法操作是指对外形相同的两个矩阵,进行相同位置元素的加法运算,得到一个和输入矩阵相同外形的矩阵。下面的代码便演示了加法操作的使用:
>>> a = numpy.random.rand(3,2) # a是3行2列的随机二维矩阵 >>> b = numpy.random.rand(3,2) # b是3行2列的随机二维矩阵 >>> a # 查看a的值 array([[0.49219148, 0.30470874], [0.42371119, 0.96857757], [0.09432051, 0.55935613]]) >>> b # 查看b的值 array([[0.41471195, 0.85316671], [0.6231908 , 0.98244841], [0.65246256, 0.73501929]]) >>> a+b # a+b的值 array([[0.90690343, 1.15787545], [1.04690199, 1.95102597], [0.74678307, 1.29437542]])
与之类似的还有减法、乘法和除法操作,其运算符号和普通的数值运算符号相同,都是对相同的位置进行操作。下面的例子是减法操作的使用:
>>> a = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> b = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> a # 查看矩阵a的内容 array([[0.49219148, 0.30470874], [0.42371119, 0.96857757], [0.09432051, 0.55935613]]) >>> b # 查看矩阵b的内容 array([[0.41471195, 0.85316671], [0.6231908 , 0.98244841], [0.65246256, 0.73501929]]) >>> a-b # 减法操作 array([[ 0.07747953, -0.54845797], [-0.19947961, -0.01387084], [-0.55814205, -0.17566316]])
下面的例子是乘法操作的使用:
>>> a = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> b = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> a # 查看矩阵a的内容 array([[0.49219148, 0.30470874], [0.42371119, 0.96857757], [0.09432051, 0.55935613]]) >>> b # 查看矩阵b的内容 array([[0.41471195, 0.85316671], [0.6231908 , 0.98244841], [0.65246256, 0.73501929]]) >>> a * b # 乘法操作 array([[0.20411769, 0.25996735], [0.26405291, 0.95157749], [0.0615406 , 0.41113754]])
下面是除法操作运算的例子:
>>> a = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> b = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> a # 查看矩阵a的内容 array([[0.49219148, 0.30470874], [0.42371119, 0.96857757], [0.09432051, 0.55935613]]) >>> b # 查看矩阵b的内容 array([[0.41471195, 0.85316671], [0.6231908 , 0.98244841], [0.65246256, 0.73501929]]) >>> a / b # 除法操作 array([[1.18682735, 0.3571503 ], [0.67990604, 0.98588135], [0.1445608 , 0.76100877]])
还可以对矩阵进行逻辑判断,例如判断矩阵元素是否大于 0 或者小于 1。其结果是一个矩阵,分别表示各元素是否满足规定的判断。例如下面就是判断矩阵元素是否小于 0.5 的操作:
>>> a = np.random.rand(3,2) # 随机生成3x2的矩阵 >>> a # 查看矩阵a的内容 array([[0.36826283, 0.1993915 ], [0.3278179 , 0.66236192], [0.98973706, 0.67244684]]) >>> a < 0.5 # 各个元素是否小于0.5 array([[ True, True], [ True, False], [False, False]])
当然也可以和其他矩阵进行比较,例如下面的例子:
>>> a = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> b = numpy.random.rand(3,2) # 随机生成3x2的矩阵 >>> a # 查看矩阵a的内容 array([[0.49219148, 0.30470874], [0.42371119, 0.96857757], [0.09432051, 0.55935613]]) >>> b # 查看矩阵b的内容 array([[0.41471195, 0.85316671], [0.6231908 , 0.98244841], [0.65246256, 0.73501929]]) >>> a < b # a的各个元素是否小于b对应的元素 array([[False, True], [ True, True], [ True, True]])