numpy中的向量和矩阵 ( 关于axis关键字的理解 )

本文旨在深入理解numpy中axis参数在处理向量和矩阵时的作用。通过实例和反证法,解释了(3,)表示的向量是列向量,并探讨了在数据处理中选择axis=0或axis=1的重要性。" 115735072,9747790,DCT 4x4直流成分分析,"['图像处理', '信号处理', '压缩算法']

本文目标:

证明:
1.(3,)表示列向量,[ [1,2,3], [1,2,4 ]]  中 [1,2,3] 是行向量
2. axis = 0 表示对行进行操作,axis = 1 表示对列操作

ps:(其实只是加深自己的理解233,所以证明的可能不严谨)

前期铺垫:

  • 什么是行合并?
a = np.array([[1,2,4],[2,3,4]])
b = np.array([[1,2,4],[2,2,2]])

print(a.shape)
print(np.concatenate([a,b], axis=0))

(2, 3) -- 2行3列
[[1 2 4]
 [2 3 4]
 [1 2 4]
 [2 2 2]]

2行3列 与 2行3列 进行axis=0的行合并操作得到 4行3列

正文:

a = np.array([1,2,3])
print(a.shape()) # (3,)
  • 这个(3,)表示就是向量
    • 那这个是列向量还是行向量呢?
      • 列向量 !

(这个问题很重要,比如:使用numpy等工具进行数据处理时,是axis=0,还是axis=1)

下面用代码的逻辑来证明:

首先,
t1 = np.array([1,2,3]) 
t2 = np.array([1,2,3])
print(np.concatenate([t1,t2], axis=0)) 
预告:两个nx1的列向量进行行合并,变成2nx1的列向量
# [1 2 3 1 2 3] 运行结果确实如此
  • 反证
t1 = np.array([1,2,3]) 
t1 = t1.reshape(3,1) # 强行转成3×1的列矩阵(不是列向量哦~)
t2 = np.array([1,2,3])
t2 = t2.reshape(3,1)

print(np.concatenate([t1,t2], axis=1))
[[1 1]
 [2 2]
 [3 3]]
# axis = 1 进行列合并

结论:

在一般的矩阵比如:
x = [[1 2 4 ], [1 2 3 ]] 这个[1 2 4]其实是行向量(可能是为了迎合视觉吧)
但 y = [1 2 3] #(3,)这就妥妥的是列向量了

希望以后碰到axis = 0,axis=1后不要再一脸蒙蔽
ps:axis = 0确实是对行操作,axis=1确实是对列操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值