Python进阶学习--NumPy--np.c_ 和 np.r_ 的区别
🚀 深入探索NumPy的np.c_和np.r_函数!🚀🌟 这篇博客带你深入了解NumPy中两个强大的数组拼接工具:np.c_(按列拼接)和np.r_(按行拼接)。🔍 通过生动的代码示例和详细的使用场景分析,你将轻松掌握它们之间的区别和最佳实践。同时,我们还讨论了性能与内存的影响,确保你能够在实际项目中做出明智的选择。#NumPy #np.c_ #np.r_ #数组拼接 #Python进阶学
Python进阶学习–NumPy–np.c_ 和 np.r_ 的区别
🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)
在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_ 提供了方便的方式来水平或垂直地堆叠数组,这对于数据预处理、特征工程以及构建和训练模型等任务非常有用。
六、🤝 最后
亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。
我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!
您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!
🎉 感谢阅读,祝你编程愉快! 🎉
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)