学习内容:
一、什么是数组、矩阵
数组(Array):是有序的元素序列,可以是一维、二维、多维。
array1 = [1,2,3] 或['a', 'b', 'c', 'd']
array2 = [[1,2,3],[4,5,6]]
矩阵(Matrix):是一个按照长方阵列排列的复数或实数集合。
基本运算
加(减)法: 对有相同行数与列数的数组(矩阵)的各项数字相加(减),得到新数组(矩阵)。
乘法:
1.数组乘法:对有相同行、列数的数组相乘得到新数组。
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[4,5,6],[7,8,9]])
a * b # 将数组a、b的对应项相乘
#输出:array([[ 4, 10, 18], [28, 40, 54]])
2.矩阵乘法:矩阵A 、B相乘,必须矩阵B行数==矩阵A列数。
二、创建与访问数组
(一)创建数组
1. 通过 python list 创建数组(array())
import numpy as np
np.array([1,2,3])
#输出:array([1, 2, 3])
2. 创建全零数组(zeros(行数,列数))
np.zeros((2,3)) # 创建一个2行3列的全0数组
#输出:array([[0., 0., 0.], [0., 0., 0.]])
3. 创建全1数组(ones(行数,列数))
np.ones((2,3)) # 创建一个2行3列的全1数组
#输出:array([[1., 1., 1.], [1., 1., 1.]])
4. 生成一个单位矩阵(行列号相同为1,其余置0)(eye(行数,列数))
np.eye(3,4)
#输出:array([[1., 0., 0., 0.],
# [0., 1., 0., 0.],
# [0., 0., 1., 0.]])
5. 创建间隔相等的数字数组(arange(含开始值, 不含结束值, 间隔值(可为小数))
np.arange(1, 5, 0.5)
#输出:array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
np.arange(5) # 生成[0-4]的整数数组
6. 随机生成数组
随机生成N个 [0-1) 之间的数组(np.random.rand(N))
np.random.rand(5)
#输出:array([0.74466065, 0.60475285, 0.01624092, 0.23405253, 0.31129117])
随机生成N个服从标准正态分布的数据(np.random.randn(N))
np.random.randn(3)
#输出:array([ 0.5861455 , -1.74517127, -0.04381483])
随机生成任意整数数组(np.random.randint(low: 下限,high:上限,size: 个数))
np.random.randint(10) # 生成1个[0-9]之间的整数
np.random.randint(10,size=5) # 生成5个[0-9]之间的整数数组
np.random.randint(10,20) #生成1个[10-20)之间的整数
np.random.randint(10,20,5) # 生成5个[10-20)之间的整数数组
7. 将转换数组维度(reshape(一维数,[二维数, 三维数, …]),要求转换前后元素个数相同
a = np.array([1,2,3,4,5,6,7,8])
a.reshape(2,4) # 将一维数组转为2行4列的二维数组
#输出:array([[1, 2, 3, 4],
# [5, 6, 7, 8]])
b = np.array([[1, 2, 3],[4, 5, 6]])
b.reshape(6) # 将二维数组转为一组数组
#输出:array([1,2,3,4,5,6])
**(二)查看数组对象属性
list_a = [1,2,3,4]
array_a = np.array(list_a)
array_b = np.array([list_a, list_a])
1. 查看数组维度(ndim)
array_a.ndim # 维度为1
#输出:1
array_b.ndim # 维度为2
#输出:2
2. 查看数组大小(shape)
array_a.shape
#输出(4,)
array_b.shape
#输出(2,4)
3. 查看数组元素个数(size)
array_a.size # 4个
array_b.size # 8个
4. 查看数组元素数据类型(dtype)
array_a.dtype
#输出:dtype('int64')
三、矩阵基本操作
1. 用二维数组生成矩阵(matrix())
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
np.matrix(a)
#输出:matrix([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
matrix_a = np.matrix(a)
2. 矩阵加(减运算)
matrix_a + matrix_a
#输出:matrix([[ 2, 4, 6],
# [ 8, 10, 12],
# [14, 16, 18]])
matrix_a - matrix_a
#输出:matrix([[0, 0, 0],
# [0, 0, 0],
# [0, 0, 0]])
3. 矩阵乘 (矩阵B.dot(矩阵A)),要求矩阵B列数与矩阵A行数相同,结果为B行,A列数组。
a = np.arange(8).reshape(2,4) # 生成一个2行4列的二维数组
matrix_a = np.matrix(a)
#矩阵a结构如下:
matrix([[0, 1, 2, 3],
[4, 5, 6, 7]])
b = np.arange(6).reshape(3,2) # 生成一个2行4列的二维数组
matrix_b = np.matrix(b)
#矩阵b结构如下:
matrix([[0, 1],
[2, 3],
[4, 5]])
matrix_b.dot(matrix_a)
#输出如下
matrix([[ 4, 5, 6, 7],
[12, 17, 22, 27],
[20, 29, 38, 47]])