numpy用于矩阵计算,内置了大量矩阵计算的函数,并且速度也比列表快

创建

import numpy as np
a = [1, 2, 3]
b = [[1,2],
[2, 3],
[5, 8]]
c = np.array(a)
d = np.array(b, int)

通过array就把列表转化成了numpy的矩阵

  • ones(shape, dtype): 这个是创建值全为1的矩阵,shape是矩阵的行和列数,dtype是矩阵数据类型。
  • zeros(shape, dtype): 创建全是零的矩阵
  • full(shape, constant_value, dtype): 创建指定数值的矩阵。其中constant_value是用来填充矩阵的值
  • eye(N): 创建单位矩阵,N是矩阵的维度
  • diag(v, k): 创建对角矩阵。v如果是一维则是创建对角矩阵,如果是二维是获取对角线上的元素。k=0表示获取主对角线上元素,k>0则获取主对角线上方第k条对角线元素

创建随机数组

  • np.random.rand(shape): 创建一个值在0到1的随机数组。例如np.random.rand(10, 10, 3)是创建一个三维数组
  • uniform(low, high, shape): 创建一个值在low到high的随机数组
  • randint(low, high, shape): 创建一个值在low到high并且值是整数的随机数组
  • normal(loc, scale, shape): 给定均值,方差,维度的正态分布。

查看矩阵属性

  • size(): 获得矩阵元素个数
  • shape(): 获得矩阵的行和列,shape[0]是行,shape[1]是列.但是如果是一维数组那么shape[0]表示列数,没有shape[1]
  • ndim: 维数
  • dtype: 元素类型
  • T: 返回这个矩阵的转置

操作

  • np.copy(array): 复制矩阵
  • sort(a, axis): axis = 0是每行进行排序,1是每列进行排序,默认是对整个数组进行排序。a是用来排序的矩阵。如果是np.sort()那么原矩阵不改变。如果是array.sort(),原矩阵改变。
  • unique(a, return_index, retrun_inverse, return_counts, axis): 查找array中唯一元素。return_index是返回新列表中元素在旧列表出现第一个位置。return_counts是每个元素在原来矩阵中数量。return_inverse是返回一个索引数组,索引的是新列表元素位置。

a = [1, 2, 3, 4, 5]
b = np.diag(a)
alpha, beta = np.unique(b, return_counts=True)
print(alpha)
print(beta)

输出:
[0 1 2 3 4 5]
[20 1 1 1 1 1]
a = [1, 2, 3, 4, 5]
b = np.diag(a)
alpha, beta = np.unique(b, return_inverse=True)
print(alpha)
print(beta)

输出
[0 1 2 3 4 5]
[1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5]
  • array.reshape(shape): 改变形状,但是元素个数不变,如果改变形状后元素数目和原来不同会报错。原数组改变
  • array.resize(shape): 改变形状,元素个数可变,不足补零。如果小于原来数目会输出None,采取逐个填充的方法。

计算

  • +: 矩阵加法,让矩阵中每个元素都相加。例如a+5是矩阵中每个元素都加五。a+b是矩阵中对应元素相加
  • *: 注意矩阵乘法是dot函数,这个是对应元素相乘
  • ==: 矩阵中逐个元素进行比对,然后返回一个bool型矩阵,如果两个矩阵对应位置相同那么bool型矩阵对应位置就是True。
  • dot(): 矩阵相乘
  • delete(a, elements, axis): 矩阵删除行或列。elements是删除的行或列的序号
  • append()
  • insert()