NumPy中np.c_ 和 np.r_ 的区别小结

 更新时间:2024年02月27日 10:02:33   作者:高斯小哥  
np.c_和 np.r_是NumPy库中两个非常有用的函数,它们分别用于按列和按行拼接数组本文主要介绍了NumPy中np.c_ 和 np.r_ 的区别小结,具有一定的参考价值,感兴趣的可以了解一下

在Python的数据科学库中,NumPy无疑是最受欢迎和最常用的库之一。NumPy为大型多维数组和矩阵提供了强大的支持,并包含了一系列用于操作这些数组的函数。在这篇文章中,我们将深入探讨NumPy中的两个函数:np.c_ 和 np.r_。这两个函数都用于将多个数组按列(column)或行(row)拼接在一起,但它们之间有一些微妙的差异。

一、🚀 np.c_:按列拼接

np.c_ 函数用于将多个一维或二维数组按列拼接在一起。这意味着它将数组水平地堆叠在一起。

代码示例

import numpy as np

# 创建两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 使用 np.c_ 按列拼接
c = np.c_[a, b]

print(c)

print("*"*50)

# 创建两个二维数组
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])

# 使用 np.c_ 按列拼接
z = np.c_[x, y]

print(z)

输出:

[[1 4]
 [2 5]
 [3 6]]
**************************************************
[[1 2 5 6]
 [3 4 7 8]]

如你所见,np.c_ 函数将数组水平地堆叠在一起,意味者如果两个数组的行数不相同,将会报错:

import numpy as np

# 创建两个二维数组
x = np.array([[1, 2, 3], [3, 4, 5], [6, 7, 8]])
print(x.shape) # (3, 3) 三行三列
y = np.array([[5, 6], [7, 8]])
print(y.shape) # (2, 2) 两行两列

# 使用 np.c_ 按列拼接
z = np.c_[x, y]

print(z)

运行报错:

ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 3 and the array at index 1 has size 2

二、🚀 np.r_:按行拼接

相比之下,np.r_ 函数用于将多个一维或二维数组按行拼接在一起。这意味着它将数组垂直地堆叠在一起。

代码示例

import numpy as np

# 创建两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 使用 np.r_ 按行拼接
c = np.r_[a, b]

print(c)

print("*"*50)

# 创建两个二维数组
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6]])

# 使用 np.r_ 按行拼接
z = np.r_[x, y]

print(z)

输出:

[1 2 3 4 5 6]
**************************************************
[[1 2]
 [3 4]
 [5 6]]

注意,当使用 np.r_ 进行拼接时,输出数组的行数将是输入数组行数的总和。同样,如果输入数组的列数不匹配,也会出现类似的报错。

三、🎯 性能与内存考虑

虽然 np.c_ 和 np.r_ 在功能上有所不同,但在大多数情况下,它们的性能差异并不显著。然而,当处理大型数据集时,理解这些函数的内部工作原理和潜在的内存影响是很重要的。

由于 np.c_ 和 np.r_ 都是基于NumPy的底层函数实现的,它们通常比使用Python的内置列表拼接操作更快、更高效。这是因为NumPy能够在C语言级别上执行这些操作,从而避免了Python解释器的开销。

四、💡 使用场景分析

选择使用 np.c_ 还是 np.r_ 取决于你的具体需求。

  • 如果你需要将多个数组水平地堆叠在一起(即按列拼接),那么应该使用 np.c_
  • 如果你需要将多个数组垂直地堆叠在一起(即按行拼接),那么应该使用 np.r_

此外,当处理多维数组时,了解数组的形状和维度是非常重要的。这将帮助你确定应该使用 np.c_ 还是 np.r_,以确保得到期望的结果。

五、🎉 总结

np.c_ 和 np.r_ 是NumPy库中两个非常有用的函数,它们分别用于按列和按行拼接数组。虽然它们的功能相似,但它们之间的主要区别在于拼接的方向。了解这些差异并根据具体需求选择适当的函数,将帮助你更有效地处理多维数组和矩阵。

在数据科学、机器学习和科学计算中,经常需要对数组进行各种变换和操作。np.c_ 和 np.r_ 提供了方便的方式来水平或垂直地堆叠数组,这对于数据预处理、特征工程以及构建和训练模型等任务非常有用。

到此这篇关于NumPy中np.c_ 和 np.r_ 的区别小结的文章就介绍到这了,更多相关NumPy np.c_ 和 np.r_ 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • centos6.8安装python3.7无法import _ssl的解决方法

    centos6.8安装python3.7无法import _ssl的解决方法

    这篇文章主要介绍了centos6.8安装python3.7无法import _ssl的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 从PySpark中的字符串获取列表方法讲解

    从PySpark中的字符串获取列表方法讲解

    在本篇内容里小编给大家分享的是一篇关于从PySpark中的字符串获取列表方法讲解及相关实例,有需要的朋友们跟着学习下。
    2021-12-12
  • 如何用Python进行时间序列分解和预测

    如何用Python进行时间序列分解和预测

    这篇文章主要介绍了如何用Python进行时间序列分解和预测,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • 基于Python编写一个单词自测程序

    基于Python编写一个单词自测程序

    这篇文章主要为大家详细介绍了如何基于Python编写一个单词自测程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • 图文详解Django使用Pycharm连接MySQL数据库

    图文详解Django使用Pycharm连接MySQL数据库

    这篇文章主要介绍了Django使用Pycharm连接MySQL数据库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 详解python深浅拷贝区别

    详解python深浅拷贝区别

    在本篇文章里小编给大家整理了关于python深浅拷贝区别的相关知识点总结,有兴趣的朋友们可以参考下。
    2019-06-06
  • python基于递归解决背包问题详解

    python基于递归解决背包问题详解

    这篇文章主要介绍了python基于递归解决背包问题,递归是个好东西,任何具有递归性质的问题通过函数递归调用会变得很简单。一个很复杂的问题,几行代码就能搞定,需要的朋友可以参考下
    2019-07-07
  • Python搭建代理IP池实现获取IP的方法

    Python搭建代理IP池实现获取IP的方法

    这篇文章主要介绍了Python搭建代理IP池实现获取IP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Django自定义认证方式用法示例

    Django自定义认证方式用法示例

    这篇文章主要介绍了Django自定义认证方式用法,结合实例形式分析了Django自定义认证的创建、设置及功能实现技巧,需要的朋友可以参考下
    2017-06-06
  • Python连接Postgres/Mysql/Mongo数据库基本操作大全

    Python连接Postgres/Mysql/Mongo数据库基本操作大全

    在后端应用开发中,经常会用到Postgres/Mysql/Mongo这三种数据库的基本操作,今天小编就给大家详细介绍Python连接Postgres/Mysql/Mongo数据库基本操作,感兴趣的朋友一起看看吧
    2021-06-06

最新评论