1. np.c_ 的使用
- np.c_ 是 NumPy 库中的一个函数,用于沿着第二轴(
列
)连接两个或多个数组。这个函数通常用于将两个数组的列合
并在一起,而不会改变它们原有的行顺序。 - np.c_ 是一个非常有用的工具,尤其是在处理需要按列合并数据的场景中。它使得数据操作更加灵活和高效。
- 用于列合并的数组,行数要相等。
1.1 使用方法
np.c_ 的使用格式如下:
numpy.c_[array1, array2, ..., arrayN]
这里,array1, array2, …, arrayN 是要连接的数组。
(1)合并两个一维数组
import numpy as np# 定义两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 合并这两个数组
c = np.c_[a, b]
print(a.shape)
print(c)
- 可以看到
a和b
对应的shape大小都是(3,1), 经过np.c_[a, b]
,将他们在列方向拼接在一起。 - 得到输出的shape大小为(3,2)
(2) 合并两个二维数组
import numpy as np# 定义两个二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])# 合并这两个数组
c = np.c_[a, b]
print(c)
# 输出: [[1 2 5 6]
# [3 4 7 8]]
(3) 合并多个数组
import numpy as np# 定义多个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])# 合并这些数组
d = np.c_[a, b, c]
print(d)
# 输出: [[1 4 7]
# [2 5 8]
# [3 6 9]]
(4) 使用切片和索引
import numpy as np# 定义一个二维数组
a = np.array([[1, 2], [3, 4], [5, 6]])# 使用切片和索引合并数组
b = np.c_[a[0:2, :], a[1:, :]]
print(b)
1.2 案例
在bev项目中,经常需要给数据增加一个batch_id,此时就可以使用np.c_
来实现,非常方便
import numpy as np
data= np.random.uniform(-1, 1, (5, 3))
print(data)
[[-0.45380672 0.29961225 0.60478025][ 0.07254224 0.53294663 0.4044583 ][-0.04580967 -0.0493629 -0.22611381][-0.0047154 0.04350007 -0.57873508][-0.05946754 -0.63166944 0.59860458]]
data_new= np.c_[np.array(data), np.ones(len(data))]
得到的输出如下:
array([[-0.45380672, 0.29961225, 0.60478025, 1. ],[ 0.07254224, 0.53294663, 0.4044583 , 1. ],[-0.04580967, -0.0493629 , -0.22611381, 1. ],[-0.0047154 , 0.04350007, -0.57873508, 1. ],[-0.05946754, -0.63166944, 0.59860458, 1. ]])
data_new1= np.c_[np.array(data), np.full((len(data), 1),fill_value=2)]
array([[-0.45380672, 0.29961225, 0.60478025, 2. ],[ 0.07254224, 0.53294663, 0.4044583 , 2. ],[-0.04580967, -0.0493629 , -0.22611381, 2. ],[-0.0047154 , 0.04350007, -0.57873508, 2. ],[-0.05946754, -0.63166944, 0.59860458, 2. ]])
2. np.r_ 的使用
np.r_
是 NumPy 库中的一个方便的索引工具,用于沿着第一个轴(行)连接数组。它常用于将多个数组或数组片段合并成一个更大的数组。np.r_ 可以处理一维或多维数组,并且可以一次性处理多个数组。
2.1 使用方法
np.r_ 的使用格式如下:
numpy.r_[array1, array2, ..., arrayN]
这里,array1, array2, …, arrayN 是要连接的数组。
2.2 案例
(1) 连接一维数组
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)
# 输出: [1 2 3 4 5 6]
- a和b的shape都是大小为
(3,1)
,通过np.r_
在行方向进行拼接得到shape大小为(6,1)
(2) 连接二维数组
import numpy as np# 定义两个二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])# 使用 np.r_ 连接这两个数组
c = np.r_[a, b]
print(c)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
np.r_ 是一个非常灵活的工具,可以用于各种数组合并的场景。它特别适合于在数组操作和数据处理中快速组合数据。