Python中numpy库中 axis=0,axis= 1轴的详解

本文详细解释了在处理二维矩阵时,如何通过设定axis参数来指定对行或列进行操作的方法。包括求和、求最大值等操作的具体实现,并提供了实例代码。

对数据比如二维矩阵进行操作时,经常需要在横轴(行)方向或者纵轴(列)方向对数据进行操作,这时需要设定参数axis的值:

  1. axis = 0 代表对横轴(行)操作,也就是第0轴;
  2. 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,也就是求一个样本  一行里面最大的

<think>好的,我现在要帮助用户了解NumPy中median函数的用法。首先,我需要回忆自己对这个函数的了解,并整理相关的知识点。我记得numpy.median用于计算数组的中位数,可以沿指定计算,同时处理多维数组。不过具体的参数和示例可能需要进一步确认。 接下来,我应该按照用户的要求,结构清晰地分步骤解释。首先介绍基本用法,然后是多维数组的处理,接着是axis参数的应用,keepdims的作用,以及处理NaN值的情况。每个部分都需要用示例代码来说明,同时注意使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$。 用户还提到需要生成相关问题,我需要考虑用户可能进一步想知道的内容,比如中位数与平均数的区别、处理高维数组、性能优化等。这些问题应该与median函数的使用场景和常见问题相关。 同时,需要检查是否有相关的引用内容可以借鉴。用户提供的引用[2]提到了axis参数的使用,这在讲解median函数的axis参数时可以作为参考,比如给出类似的操作示例。例如,在sum和min函数中axis的应用,median函数也会有类似的行为,这可以帮助用户更好地理解。 另外,用户可能遇到的错误,比如数据类型问题或指定错误,也应该在注意事项中提到。比如,如果用户传入非数值类型的数组,会抛出TypeError,或者指定不存在的导致IndexError。这些常见错误的处理能帮助用户避免实际问题。 最后,确保所有数学表达式正确使用LaTeX格式,例如中位数的定义公式需要使用独立公式块,并用$$包围。代码示例需要用正确的语法,比如使用numpy的数组创建函数,并展示median的不同参数效果。 现在,我需要将这些思路组织成一个结构化的回答,确保每个部分清晰,并且包含示例代码和注意事项。同时,生成的相关问题要覆盖用户可能感兴趣的扩展内容,帮助他们进一步学习。</think>### NumPy中median函数的用法详解PythonNumPy中,`numpy.median()`函数用于计算数组的中位数,支持多维数组和沿指定计算[^2]。中位数的定义公式为: $$ \text{median} = \begin{cases} x_{\frac{n+1}{2}} & \text{若n为奇数} \\ \frac{x_{\frac{n}{2}} + x_{\frac{n}{2}+1}}{2} & \text{若n为偶数} \end{cases} $$ #### 1. 基本用法 ```python import numpy as np arr = np.array([3, 1, 5, 2, 4]) result = np.median(arr) print(result) # 输出: 3.0 ``` #### 2. 多维数组处理 ```python matrix = np.array([[1, 3, 5], [2, 4, 6]]) print(np.median(matrix)) # 输出: 3.5(所有元素排序后的中间值) ``` #### 3. 指定计算(axis) - **axis=0** 按列计算中位数 - **axis=1** 按行计算中位数 ```python print(np.median(matrix, axis=0)) # 输出: [1.5 3.5 5.5] print(np.median(matrix, axis=1)) # 输出: [3. 4.] ``` #### 4. 保持维度(keepdims) ```python print(np.median(matrix, axis=0, keepdims=True)) # 输出: [[1.5 3.5 5.5]](保持二维结构) ``` #### 5. 处理NaN值 使用`np.nanmedian()`忽略缺失值: ```python arr_nan = np.array([1, np.nan, 3, 5]) print(np.nanmedian(arr_nan)) # 输出: 3.0 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值