Python之NumPy(axis=0/1/2...)的透彻理解

本文详细解析了numpy中axis参数的使用方法,通过具体实例解释了如何在不同维度的数组中进行运算,帮助读者深入理解并掌握高维数组的运算技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在numpy的使用中,对axis的使用总是会产生疑问,如np.sum函数,在多维情况下,axis不同的取值应该做怎样的运算呢?返回的是什么形状的数组呢?在网上查了很多资料,总是似懂非懂,查阅了官方文件,以及多次试验后,我总结出一种能深入透彻理解axis用法的说明,配合着np.sum例子。希望大家再也不会对axis的使用产生困惑,即使在高维情况下也信手拈来。

numpy中axis取值的说明

首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维数越高,则axis可取的值越大,数组n维时,axis=0,1,…,n。为了方便下面的理解,我们这样看待:在numpy中数组都有着[]标记,则axis=0对应着最外层的[],axis=1对应第二外层的[],以此类推,axis=n对应第n外层的[]。 
下面开始从axis=0,axis=1这两个例子开始,深入透彻的理解numpy中axis的用法。

axis = 0表示对最外层[]里的最大单位块做块与块之间的运算,同时移除最外层[]

a= np.array([1,2,3])    
a.sum(axis = 0)
>>>6

因为只有一层[],所以直接对这一层里的最大单位快1,2,3做运算; 
做完加法后本应是[6],但是移除最外层[]后,[]不存在了,所以返回的是6。

a= np.array([[1,2],[3,4]])  
a.sum(axis = 0)
>>>array([4, 6])

有两层[],最外层[]里的最大单位块分别为[1,2],[3,4],对这两个单位块做块与块之间的运算,[1,2]+[3,4] = [4, 6]; 
做完加法后本应是[[4, 6]],但是移除最外层[]后,原来的两层[]变成一层[],所以返回结果为 [4, 6]。

np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 0)
>>>array([[12, 14], [16, 18]])

有三层[],最外层[]里的最大单位块分别为[[1,2],[3,4]],[[11,12],[13,14]],对这两个单位块做块与块之间的运算,[[1,2],[3,4]] + [[11,12],[13,14]] = [[12, 14], [16, 18]]; 
做完加法后本应是[[[12, 14], [16, 18]]],但是移除最外层[]后,原来的三层[]变成两层[],所以返回结果为[[12, 14], [16, 18]];

axis= 1表示对第二外层[]里的最大单位块做块与块之间的运算,同时移除第二外层[]:

a= np.array([[1,2],[3,4]])  
a.sum(axis = 1)
>>>array([3, 7])

有两层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是1,2,第二组是3,4,分别对这两个单位块做块与块之间的运算,第一组结果为1+2=3,第二组结果为3+4=7; 
做完加法后本应是[[3],[7]],但是移除第二外层[]后,原来的两层[]变成一层[],所以返回结果为[3, 7]。

np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 1)
>>>array([[ 4,  6], [24, 26]])

有三层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是[1,2],[3,4],第二组是[11,12],[13,14],分别对这两个单位块做块与块之间的运算,第一组结果为[1,2]+[3,4] = [ 4, 6],第二组结果为[11,12]+[13,14] = [24, 26] 
做完加法后本应是[[[ 4, 6]], [[24, 26]]],但是移除第二外层[]后,原来的三层[]变成两层[],所以返回结果为[[ 4, 6], [24, 26]]

axis = 3,4,5也如此分析。

看懂了这些说明,相信你对axis已经有了深入的理解,以后再也不用怕高维数组关于axis的运算了!
--------------------- 
作者:sky_kkk 
来源:https://blog.youkuaiyun.com/sky_kkk/article/details/79725646 
版权声明:本文为博主sky_kkk原创文章,转载请附上博文链接!

<think>好的,用户问的是Python 3.6是否支持numpy==1.23.5。我需要先确认这个版本的兼容性。 首先,用户之前的问题是关于numpy.testing.decorators模块缺失,这在1.24版本被移除。所以用户想降级到1.23.5来解决这个问题。但用户现在用的是Python 3.6,需要确认是否兼容。 接下来,我应该检查NumPy官方文档或发布说明。通常,NumPy会列出每个版本支持的Python版本。根据我的知识,NumPy 1.23.x系列应该是支持Python 3.6到3.10的。但Python 3.6的支持可能在某些版本中已经停止,不过1.23.5应该还是支持的。 然后,用户可能是在运行旧项目,所以必须使用Python 3.6。这时候需要确保安装的NumPy版本不仅兼容Python 3.6,还能解决他们之前遇到的问题。另外,用户可能对虚拟环境不熟悉,可能需要指导如何创建虚拟环境来测试。 还要考虑用户是否有权限安装旧版本,或者是否需要使用pip的特定命令。例如,使用pip install numpy==1.23.5可能直接可行,但需要确认是否有对应的wheel文件。如果用户遇到安装问题,可能需要额外的步骤,比如从存档下载或者使用其他工具。 另外,用户可能没有意识到Python 3.6已经不再受官方支持,是否需要建议他们升级Python版本?不过如果项目限制无法升级,那还是得解决当前的问题。这时候需要给出明确的步骤,确保他们能顺利安装并解决问题。 最后,相关问题需要围绕Python版本兼容性、安装旧版库的方法以及替代解决方案展开,帮助用户全面了解可能的选项和注意事项。</think>--- ### ✅ 答案:**Python 3.6 支持 `numpy==1.23.5`** 但需注意以下兼容性细节: --- ### 🔍 **1. NumPy 1.23.5 的 Python 版本支持** - **官方支持的 Python 版本**:`3.7–3.10`([NumPy 1.23 Release Notes](https://numpy.org/doc/stable/release/1.23.0-notes.html#python-version-support))。 - **Python 3.6 的兼容性**: - **理论上支持**:NumPy 1.23.x 的早期版本(如 1.23.5)可能仍兼容 Python 3.6,但官方不再提供测试或维护。 - **实际验证**:可通过以下命令尝试安装: ```bash pip install numpy==1.23.5 ``` - 若安装失败,需手动下载对应版本的 `.whl` 文件(见下方解决方案)。 --- ### 🛠️ **2. 解决方案:如何在 Python 3.6 中安装 `numpy==1.23.5`** #### 方法 1:直接安装(推荐) ```bash pip install numpy==1.23.5 ``` - **成功条件**:系统环境(如操作系统、编译器)需与预编译的 `.whl` 文件兼容。 - **失败原因**:若无对应 Python 3.6 的预编译包,会触发源码编译,可能因依赖缺失失败。 #### 方法 2:手动下载 `.whl` 文件 1. **访问 [NumPy 官方存档](https://pypi.org/project/numpy/1.23.5/#files)**。 2. **选择与 Python 3.6 兼容的 `.whl` 文件**(如 `numpy-1.23.5-cp36-none-win_amd64.whl` 或 Linux/macOS 对应版本)。 3. **本地安装**: ```bash pip install numpy-1.23.5-cp36-none-<your_platform>.whl ``` #### 方法 3:使用虚拟环境(推荐隔离环境) ```bash # 创建虚拟环境 python3.6 -m venv py36_env source py36_env/bin/activate # Linux/macOS py36_env\Scripts\activate # Windows # 安装指定版本 pip install numpy==1.23.5 ``` --- ### ⚠️ **3. 注意事项** 1. **Python 3.6 的安全性**: - Python 官方已于 2021 年停止对 3.6 的支持,可能存在安全风险。 - **建议**:若项目允许,升级到 Python 3.9+ 以获得更好的兼容性和支持。 2. **依赖冲突**: - 若其他库依赖更高版本的 NumPy,可能引发冲突。 - 使用虚拟环境可避免全局污染。 --- ### 🧪 **4. 验证安装** 安装完成后,运行以下代码验证是否成功: ```python import numpy as np print(np.__version__) # 应输出 "1.23.5" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值