首页 > Python教程 > Python NumPy库 阅读数:1

NumPy ndarray常见的操作

对于多维矩阵,可以进行变形、加减乘除等操作,本节就来介绍常见的相关操作。

1、变形reshape(维度列表)

例如原来是 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]])

2、加减乘除操作

加法操作是指对外形相同的两个矩阵,进行相同位置元素的加法运算,得到一个和输入矩阵相同外形的矩阵。下面的代码便演示了加法操作的使用:
>>> 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]])

3、逻辑判断

还可以对矩阵进行逻辑判断,例如判断矩阵元素是否大于 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]])