np.r_的用法
np.r_
是 NumPy 中的一个便捷工具,用于快速拼接数组或生成序列。它是一个基于索引的语法糖,能够简化数组操作,特别是在需要将多个数组按行(或列)拼接时非常有用。
1. np.r_
的基本功能
np.r_
的主要作用是:
- 按行拼接多个数组。
- 生成等差序列(类似于
np.arange
或np.linspace
)。 - 支持切片语法,方便生成一维数组。
语法
np.r_[array1, array2, ...]
np.r_
的输入可以是:
- 多个数组,它们会被按行拼接。
- 切片表达式(如
start:stop:step
),用于生成等差序列。 - 标量值,直接插入到结果中。
2. 示例:数组拼接
(1)拼接一维数组
np.r_
可以将多个一维数组按行拼接成一个更大的一维数组。
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])result = np.r_[a, b]
print(result)
输出:
[1 2 3 4 5 6]
(2)拼接二维数组
对于二维数组,np.r_
默认按行(垂直方向)拼接。
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])result = np.r_[a, b]
print(result)
输出:
[[1 2][3 4][5 6]]
3. 示例:生成等差序列
np.r_
支持切片语法,可以直接生成等差序列。
(1)简单的切片
result = np.r_[0:10:1] # 等价于 np.arange(0, 10, 1)
print(result)
输出:
[0 1 2 3 4 5 6 7 8 9]
(2)浮点步长
与 np.arange
不同,np.r_
的切片语法支持浮点步长。
result = np.r_[0:1:0.2] # 等价于 np.arange(0, 1, 0.2)
print(result)
输出:
[0. 0.2 0.4 0.6 0.8]
(3)反转序列
通过负步长生成反向序列。
result = np.r_[10:0:-2]
print(result)
输出:
[10 8 6 4 2]
4. 示例:混合使用
np.r_
支持混合使用数组、标量和切片。
result = np.r_[1, 2, 3, [4, 5], 6:10, -1]
print(result)
输出:
[ 1 2 3 4 5 6 7 8 9 -1]
5. 对比 np.c_
np.r_
和 np.c_
是 NumPy 中两个类似的工具,但它们的行为有所不同:
np.r_
:按行(垂直方向)拼接数组。np.c_
:按列(水平方向)拼接数组。
示例对比
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 使用 np.r_
result_r = np.r_[a, b]
print("np.r_:", result_r)# 使用 np.c_
result_c = np.c_[a, b]
print("np.c_:\n", result_c)
输出:
np.r_: [1 2 3 4 5 6]
np.c_:[[1 4][2 5][3 6]]
6. 总结
np.r_
是一个强大的工具,适用于以下场景:
- 快速拼接数组。
- 生成等差序列。
- 混合使用数组、标量和切片。
它的简洁性和灵活性使其成为处理数组时的一个得力助手。如果您有具体的用例或问题,欢迎进一步讨论!