pandas中的轴参数axis

本文详细解释了Pandas库中Series和DataFrame两种数据结构,重点讲解了如何利用参数axis进行列或行操作,包括求和、删除等,并展示了在Series和DataFrame中axis=0和axis=1的不同效果。

        pandas库中提供了2种数据结构,Series和DataFrame。参数axis的使用,可以指定是对哪些数据进行处理。

Series

        先从Series说起。Series 是一种类似于一维数组的对象,由下面两个部分组成:

        1、index:相关数据的索引标签(也可以认为是行标签);
        2、 values:一组数据,可以视为一列数据。

我们先创建一个Series:

data = pd.Series([3,5,7,9], index=[0, 1, 2, 3])
print(data)
#输出,数据以列方式显示

 

         接下来,对data求和。data只有一维数据,按列方式展示,可以认为Series是一组列数据,以下四种方式都可以进行sum操作。

data.sum()
data.sum(axis=0)
data.sum(axis='index')
data.sum(axis='rows')

 结果是:对Series中的所有数据求和。

        如果是用drop删除data中的某一个数据,默认情况下参数还是axis=0。

        其中,另一个参数是索引号。

data.drop(0)
data.drop(0, axis=0)
data.drop(0, axis='index')
data.drop(0, axis='rows')

结果是:对Series中索引号为0的数据进行drop操作。

结合上面两个操作例子,可以认为,sum()或者drop()以及其他的函数,其作用对象是在Series上。

        

DataFrame
        DataFrame,可以看成是按一定顺序排列的多列Series组成,它将Series的使用场景从一维拓展到多维。DataFrame由下面三个部分组成:
        行索引:index
        列索引:columns
        值:value

        DataFrame 既有行索引,也有列索引,就可以由参数axis来指定是对行或列进行某项操作。
对于DataFrame,也应该是以Series为整体做为一个处理对象。

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}) 
print(df)

 

df.sum(axis=0) #与Series类似,可以另有其他三种写法

#axis=0,与单独对Series的处理机制结合起来(垂直方向上的处理),应用到DataFrame上,
就是在垂直方向上取第一个Series做处理,再将相同的处理过程应用到其他列Series上。

axis=0时,对Series的处理过程 ,相应的应用到DataFrame中的单列,而其他列照此办理;

axis=1时,对DataFrame中的行Series应用函数,再逐行处理。

总结: 主要是依据Series应用参数axis=0,是对单列数据进行处理,扩展到DataFrame时,参数axis=0也是对列Series进行处理,axis=1时对行Series进行处理。

        最后,看看concat分别在Series和DataFrame的作用效果。

# importing the module
import pandas as pd

# creating the Series
series1 = pd.Series([1, 2, 3])
display('series1:', series1)
series2 = pd.Series(['A', 'B', 'C'])
display('series2:', series2)

# concatenating
display('After concatenating:')
display(pd.concat([series1, series2]))

 

# importing the module
import pandas as pd

# creating the Series
series1 = pd.Series([1, 2, 3])
display('series1:', series1)
series2 = pd.Series(['A', 'B', 'C'])
display('series2:', series2)

# concatenating
display('After concatenating:')
display(pd.concat([series1, series2], 
				axis = 1))

 

# importing the module
import pandas as pd

# creating the DataFrames
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
					'B': ['B0', 'B1', 'B2', 'B3']})
display('df1:', df1)
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
					'B': ['B4', 'B5', 'B6', 'B7']})
display('df2:', df2)

# concatenating
display('After concatenating:')
display(pd.concat([df1, df2],
				keys=['key1', 'key2']))

 

# importing the module
import pandas as pd

# creating the DataFrames
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
					'B': ['B0', 'B1', 'B2', 'B3']})
display('df1:', df1)
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 
					'D': ['D0', 'D1', 'D2', 'D3']})
display('df2:', df2)

# concatenating
display('After concatenating:')
display(pd.concat([df1, df2],
				axis = 1))

<think>嗯,用户想要升级CUDA11.7或更高版本以支持FlashAttention,同时确保nvcc兼容性。首先,我需要回顾一下CUDA的安装流程和相关注意事项。根据用户提供的引用内容,系统可能已经安装了CUDA Driver和Toolkit,但可能需要更新。 首先,用户需要检查当前的CUDA版本。通常有两种方式:nvidia-smi显示的CUDA版本是驱动支持的版本,而nvcc --version显示的是实际安装的Toolkit版本。如果nvcc的版本低于11.7,就需要升级。 接下来,用户可能需要确认是否已经安装了CUDA Toolkit。如果没有安装,或者版本过低,就需要从官网下载。根据引用[2],需要注意系统兼容性,比如CentOS 8可能需要使用CentOS 7的安装包。此外,安装CUDA Toolkit时会同时安装Driver吗?引用[1]提到部分博客说会,但未经验证,所以用户可能需要分开安装Driver和Toolkit。 在安装过程中,用户需要下载对应版本的runfile,并注意在安装时是否选择安装Driver。如果当前Driver已经支持所需CUDA版本,可能不需要重新安装Driver,否则需要先升级Driver。另外,安装完成后,需要设置环境变量,如PATH和LD_LIBRARY_PATH,指向新版本的CUDA。 安装完成后,用户需要检查nvcc版本是否升级成功,并确保PyTorch等深度学习框架的CUDA版本与之兼容。根据引用[1],PyTorch附带的CUDA Toolkit可能是不完整的,所以需要确保系统CUDA版本高于或等于PyTorch所需的版本。 可能遇到的问题包括:安装过程中依赖项缺失、版本冲突、环境变量配置错误等。需要引导用户检查日志,处理依赖,并正确配置环境。此外,非root用户可能需要使用--toolkitpath参数指定安装路径,如引用[2]提到的非root安装方法。 最后,用户可能需要验证CUDA是否正常工作,比如编译测试程序或运行FlashAttention的示例。确保nvcc和nvidia-smi显示的版本兼容,避免版本不一致导致的错误。</think>### 检查与升级CUDA版本的逐步指南 #### 第一步:验证当前CUDA版本 1. **查看驱动支持的CUDA版本** ```bash nvidia-smi ``` 顶部显示`CUDA Version: 11.x`表示驱动支持的**最高CUDA版本**,例如显示`11.4`则支持11.4及以下版本[^1]。 2. **检查实际安装的CUDA Toolkit版本** ```bash nvcc --version ``` 若输出`nvcc: command not found`,说明未安装CUDA Toolkit;若版本低于11.7,需升级[^1]。 --- #### 第二步:安装或升级CUDA Toolkit 1. **下载CUDA 11.7+** 访问[NVIDIA CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive),选择对应系统版本。 - **非root用户注意事项**:需使用`runfile(local)`格式,通过`--toolkitpath`指定自定义路径[^2]。 - **系统兼容性**:若系统为CentOS 8但无对应版本,可尝试CentOS 7的安装包。 2. **执行安装命令** ```bash sudo sh cuda_11.7.0_xxx.run ``` - **取消驱动安装**:若驱动已支持11.7+,取消勾选`Driver`选项避免冲突。 - **自定义路径**:非root用户需添加参数:`--toolkitpath=/your/custom/path`[^2]。 3. **配置环境变量** 在`~/.bashrc`添加: ```bash export PATH=/usr/local/cuda-11.7/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH ``` 执行`source ~/.bashrc`生效。 --- #### 第三步:验证安装与兼容性 1. **检查nvcc版本** ```bash nvcc --version # 应显示11.7+ ``` 2. **确认驱动与Toolkit兼容性** - `nvidia-smi`显示的CUDA版本 >= `nvcc --version`版本[^1]。 - 若冲突(如nvidia-smi显示12.0而nvcc11.7),需升级驱动或降低CUDA Toolkit版本。 --- #### 第四步:配置PyTorch环境 1. **安装PyTorch适配版本** 使用与CUDA 11.7+匹配的PyTorch版本: ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 ``` 2. **验证PyTorch CUDA可用性** ```python import torch print(torch.cuda.is_available()) # 应输出True print(torch.version.cuda) # 应显示11.7+ ``` --- #### 可能的问题与解决方案 | 问题现象 | 解决方案 | |------------------------------|--------------------------------------------------------------------------| | `nvcc --version`无变化 | 检查环境变量是否指向新版本路径,或重新安装Toolkit | | 驱动版本低于CUDA Toolkit要求 | 升级NVIDIA驱动:`sudo apt install nvidia-driver-535`(版本号根据需求调整) | | 非root用户权限不足 | 使用`--toolkitpath`自定义路径,并确保环境变量正确指向 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值