Numpy库学习——向量表示

# 数组和向量关于冒号:的用法示例
def testArray():
    a = np.array([1, 2, 3, 4, 5])
    # 数组取值
    print(a[:])  # [1 2 3 4 5]
    print(a[2])  # 3
    b = a.reshape(1, 5)  # 转换成向量
    # 向量取值
    print(b[:, 2])  # [3]

在机器学习和深度学习的编程过程中,为了提高程序的运行速度,通常将模型表达式转换为向量表达式(向量化),即利用矩阵运算思想提高运行效率。那么,在Python中究竟如何利用Numpy库定义一个向量,以及如何判断否为向量呢?
(一)Python中向量的特征
通常情况下,Python中向量和数组之间界限比较模糊,很多时候是通用的,但是在有时候数组不一定能够表示向量,比如,利用Numpy中random模块中的randn函数生成的一维数组,既不是行向量,也不是列向量,而是秩为1的数组:

上述秩为1的一维数组仅有一个方括号,而实际中向量或者矩阵有两层方括号(即属于二维数组),下面给出列向量、行向量和矩阵的示例。
列向量:
在这里插入图片描述
行向量:
在这里插入图片描述
矩阵:
在这里插入图片描述

综上可知,可以以方括号的形式判断数组是否能够代表一个向量或者矩阵,又或者通过转置看前后是否变化来判断。
(二)Python中向量的构建
在实际编程中,可以采用如下方式构建向量或者矩阵,即

(1)reshape()函数
通过reshape()函数可以依据数组创建指定维度的向量或者矩阵,比如可以针对秩为1的数组创建列向量或者行向量或者矩阵,即由一维数组转化成二维数组,如下所示
在这里插入图片描述
注:reshape()函数可以创建指定形状的新数组,但是不会改变原数组的形状,如
在这里插入图片描述
(2)直接在构建数组时,利用数组函数指定行列数
可以利用zeros(),ones(),randn()等函数构建指定形状的数组、向量、矩阵,例如
在这里插入图片描述
注:np.zeros(数值)构建的一维数组秩为1,不能代表向量,(同rand()函数)如
在这里插入图片描述
注:empty()函数也可以构建数组,该函数创建一个指定形状和数据类型且未初始化的数组。
在这里插入图片描述
(3)np.random.rand()函数+reshape()函数
在这里插入图片描述
(4)np.arange()函数+reshape()函数
在这里插入图片描述

为什么向量化比for循环快?
numpy运算是向量化的,进行的是CPU指令集层面的并行运算,for循环是串行运算,效率肯定差多了。
向量化的优势是运行快,劣势是费内存,矩正太大就放不进去了;
for循环的优势是不费内存,劣势是运行慢,适用于数据量不大时使用;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值