概述
Numpy是高性能科学计算好数据分析的基础包,提供了矩阵运算的功能,在深度学习和数据分析领域广泛应用。。
使用
创建array数组
vector = np.asarray([1,2,3,4]);
创建zero数组
a = np.zeros(10) # 创建向量
a1 = np.zeros(shape=(5,3)) # 创建5行,3列的0矩阵
创建one矩阵
one = np.ones((3,4));
创建自定义值的矩阵
user_define = np.full((3, 5), 110) # 创建一个3行5列的矩阵,且填充值为110
创建递增的矩阵
np.arange(0,20,2) # 三个参数,第一个参数表示向量第一个值,第二个参数表示最后的值,第三个参数为步长
使用linspace创建等分的矩阵
np.linspace(0, 10, 5) # 三个参数,第一个参数表示向量开始的值,第二个参数代表向量最后的值,第三个参数表示向量总数
用随机数来创建矩阵
np.random.randint(0,10,size = 10) # 用0到10范围内产生的随机数产生一个长度为10的向量
np.random.randint(4,9,size = (5,3)) # 用4到9范围内的随机数产生一个5行3列的矩阵
用正太分布来创建矩阵
np.random.normal(loc = 1.0, scale = 1.0, size = (3,2)) # 用一个均值loc为1.0,参数为scale为1的正太分布,创建一个3行2列的矩阵
Numpy中的属性
数组维度
ndim 表示数组维度(或轴)的个数。
arr_1_d = np.asarray([1])
arr_2_d = np.asarray([[1, 2], [3, 4]])
print(arr_1_d.ndim) #结果为1,代表arr_1_d为1维矩阵也就是向量
print(arr_2_d.ndim) # 结尾为2
形状
shape 表示数组的维度或形状, 是一个整数的元组类型,元组的长度等于 ndim。
print(arr_1_d.shape) # 结果为
print(arr_2_d.shape) # 结果为[2,2]
shpe这个属性用途很广,借助于reshape()函数我们甚至还可以对数组形状进行改变,但需要保证变换后和变换前矩阵元素数量一致
arr_2_d.reshape((4,1)) # 将arr_2_d reshape为(4,1)的数组
此外reshape还有一个**order参数,**指的是以什么样的顺序读取元素,其中有这样几个参数
- ‘C’:默认参数,使用类似 C-like 语言(行优先)中的索引方式进行读写。
- ‘F’:使用类似 Fortran-like 语言(列优先)中的索引方式进行读写。
- ‘A’:原数组如果是按照‘C’的方式存储数组,则用‘C’的索引对数组进行 reshape,否则使用’F’的索引方式。
np.arange(6).reshape(2,3)
# 结果为
# array([[0, 1, 2],
# [3, 4, 5]])
np.arange(6).reshape(2,3,order = 'F')
# 结果为
# array([[0, 2, 4],
# [1, 3, 5]])
size
size,也就是数组元素的总数,它就等于 shape 属性中元素的乘积。
arr_2_d.size # 结果为2
矩阵类型
dtype,它是一个描述数组中元素类型的对象。
使用 dtype 属性可以查看数组所属的数据类型。NumPy 中大部分常见的数据类型都是支持的,例如 int8、int16、int32、float32、float64 等。dtype 是一个常见的属性,在创建数组,数据类型转换时都可以看到它。
arr_2_d.dtype # 结果为dtype('int64')
通过astype()
方法,我们可以将老矩阵按照指定类型输出一个新矩阵。
vector = np.arange(1,3)
print(vector.dtype) # 结果为int32
vector = vector.astype(float) # 结果为float64
矩阵运算
矩阵之间的点乘
矩阵乘法要求第一个矩阵的列数要等于第二矩阵的行数,具体点乘的函数为dot()
a = np.arange(1, 6).reshape(2,3)
b = np.arange(1,7).reshape(3,2)
print(a.shape[1] == b.shape[0])
print(a.dot(b))
# 结果
# [[22 28]
# [49 64]]
矩阵的转置
把原来矩阵的行变成列,列变成行
a = np.arange(1,7),reshape(2,3)
print(a.T)
# 结果
[[1 4]
[2 5]
[3 6]]
矩阵的逆
如果要求矩阵的逆,首先需要导入numpy.linalg,然后通过linalg的inv函数来求逆,矩阵求逆的条件是矩阵的行数和列数必须相同。
import numpy.linalg as lg
a = np.array([[0,1],[2,3]])
invA = lg.inv(a)
# 结果
print(A.dot(invA))
# 结果
array([[-1.5, 0.5],
[ 1. , 0. ]])
arg运算
argmax(a, axis = None, out = None)函数主要用来求一个array中最大值的下标,就是最大数所对应的索引位置是多少。
index = np.argmax([1,2,9,3,2]) # 结果为2
axis代表按照哪个轴来找最大的索引值
总结
从tx实习回来之后忙于秋招、毕设好久没有认认真真的写博客了,今天这一篇就立个flag吧,以后每周都要写一篇博客,保持原有写博客的习惯。