对数据比如二维矩阵进行操作时,经常需要在横轴(行)方向或者纵轴(列)方向对数据进行操作,这时需要设定参数axis的值:
- axis = 0 代表对横轴(行)操作,也就是第0轴;
- axis = 1 代表对纵轴(列)操作,也就是第1轴;
操作为:
axis= 0 对a的横轴(行)进行操作,在运算的过程中其运算的方向表现为纵向(列)运算
axis= 1 对a的纵轴(列)进行操作,在运算的过程中其运算的方向表现为横向(行)运算
实例:
a=[[0,1,3],[1,2,2]]
n=np.array(a)
print(n.sum(axis=0)) # 即对横轴(行)进行操作,运算方向为纵轴方向(列),对每一列进行求和
print(n.sum(axis=1)) # 即对纵轴(列)进行操作,运算方向为横轴方向(行),对每一行进行求和
print(n.max(axis=0))
print(n.max(axis=1))
结果如下:
[1 3 5]
[4 5]
[1 2 3]
[3 2]
还有 torch 里面 dim=0, dim=1 的操作,我这边口诀是,对哪个维度求,那么就消去找个维度
比如一个矩阵[3,4] ,dim=0 那么 就消去 0维,得到 [4]
每一行是 一个样本,每一列是一个特征
dim=0 表示在第 0 维上进行运算,跨行操作,也就是竖着看。
dim=1 表示在第 1 维上进行运算,跨列操作,也就是横着看。
在每一行里找最大值,返回“哪一列”最大。
memory_bank = torch.tensor([
[1, 5, 3, 2],
[7, 4, 6, 8],
[9, 1, 2, 3]
])
# 3 行(每一行是一组样本)
torch.argmax(memory_bank, dim=0)
# tensor([2, 0, 1, 1])
torch.argmax(memory_bank, dim=1)
# tensor([1, 3, 0])

一般分类任务,主要是 dim=1,也就是求一个样本 一行里面最大的
本文详细解释了在处理二维矩阵时,如何通过设定axis参数来指定对行或列进行操作的方法。包括求和、求最大值等操作的具体实现,并提供了实例代码。
2772

被折叠的 条评论
为什么被折叠?



