【Python】深入理解NumPy数组中的一维向量

本文探讨了一维向量在NumPy中的灵活使用,无论是作为行向量还是列向量,都能与矩阵进行有效乘法。通过实例和思考部分,强调了Numpy对数组形状和转置的理解。结论是,无需纠结向量的行列形式,Python会在计算中自动处理。
摘要由CSDN通过智能技术生成

一、一维向量

1.1 它到底是行向量还是列向量?

思路:利用点乘两个向量维度进行对应的测试

  • 测试1
import numpy as np
a = np.array([[1,1,1,1],[1,1,1,1]]).T #4*2矩阵
  ...: b = np.array([2,3]) #长度为2的一维向量
  ...: print(a)
  ...: print(b)
  ...: print(a.shape)
  ...: print(b.shape)
  ...: print(np.dot(a,b))
[[1 1]
 [1 1]
 [1 1]
 [1 1]]
[2 3]
(4, 2)
(2,)
[5 5 5 5]

证明已经确定,一维向量b可以作为列向量与矩阵a相乘。

  • 测试2
a = np.array([[1,1,1,1],[1,1,1,1]]).T #4*2矩阵
  ...: b = np.array([2,3]).T #长度为2的一维向量
  ...: print(a)
  ...: print(b)
  ...: print(a.shape)
  ...: print(b.shape)
  ...: print(np.dot(a,b))
[[1 1]
 [1 1]
 [1 1]
 [1 1]]
[2 3]
(4, 2)
(2,)
[5 5 5 5]

numpy中的一维向量既可以作为行向量,也可以作为列向量存在

二、思考

2.1 一维数组的转置

一维数组的转置仍是自己本身,这点根据上述实验的一维向量b的shape就能看出来,b.T(转置后)维度不变

它只是一个长度为2的一维向量

2.2 习惯上用二维矩阵而不是一维矩阵来表示行向量和列向量

因为二维必定能够确定他是行向量还是列向量。

b = np.array([[2,3]]) #行向量
c = np.array([[2],[3]]) #列向量
print(b)
print(c)
print(b.shape)
print(c.shape)

[[2 3]]
[[2]
 [3]]
(1, 2)
(2, 1)

三、总结

3.1 一维向量

Numpy中的数组shape为(m,)说明它是一个一维数组,或者说是一个向量

3.2 系统会自动判别行列向量

但是具体是行向量还是列向量是很灵活的,再与矩阵进行矩阵乘法时,numpy会自动判断此时的一维数组应该取行向量还是列向量。

3.3 总结

所以说,无须纠结得到的一维数组是行向量还是列向量,或者说一维数组在用户看来就没有行列之分,其行列的不同在Python计算时会自动进行处理。

3.4 事实

numpy对数组的转置也可以看出来,对一维数组进行转置操作,numpy内部不会对其进行任何的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值