【python】三种方式实现将2个3×5数组拼接形成6×5数组
文章目录
- 结果示例
- np.concatenate(original_array, axis=0)
- 代码解释:
- 结果
- original_array.reshape(-1, 5)
- 示例代码:
- 代码解释:
- vstack((array1, array2))
结果示例
- 有一个N维3*5大数组,我倾向于使用concatenate
Original Array (2x3x5):[[[ 0 1 2 3 4][ 5 6 7 8 9][10 11 12 13 14]][[15 16 17 18 19][20 21 22 23 24][25 26 27 28 29]]]Reshaped Array (6x5):[[ 0 1 2 3 4][ 5 6 7 8 9][10 11 12 13 14][15 16 17 18 19][20 21 22 23 24][25 26 27 28 29]]
np.concatenate(original_array, axis=0)
沿着第一个维度进行拼接意味着要将原始数组的第一个维度扩展,从而将多个块沿着这个维度排列在一起。对于形状为 2 × 3 × 5 2 \times 3 \times 5 2×3×5 的数组,这意味着将两个形状为 3 × 5 3 \times 5 3×5 的块连接起来,形成一个新的形状为 6 × 5 6 \times 5 6×5 的数组。
以下是如何实现这一操作的代码示例:
import numpy as np# 创建一个 2x3x5 的示例数组
original_array = np.arange(30).reshape(2, 3, 5)# 沿着第一个维度进行拼接
# 先将第一个维度与第二个维度调换,再将数组展平
concatenated_array = np.concatenate(original_array, axis=0)# 打印结果
print("Original Array (2x3x5):\n", original_array)
print("\nConcatenated Array (6x5):\n", concatenated_array)
代码解释:
- 创建原始数组:
original_array
是一个形状为 2 × 3 × 5 2 \times 3 \times 5 2×3×5的数组,其中有 2 个块(深度),每个块包含 3 行,每行有 5 列。 - 沿第一个维度拼接:
np.concatenate(original_array, axis=0)
使用np.concatenate
函数沿着第一个维度(即轴0)进行拼接。这里的axis=0
表示将第一个维度的元素扩展,即将每个形状为 3 × 5 3 \times 5 3×5 的块一个接一个地堆叠起来。- 结果将是一个形状为 (6 \times 5) 的数组
concatenated_array
。
结果
通过这种方法,您将原始的 2 × 3 × 5 2 \times 3 \times 5 2×3×5 数组中的两个块沿着第一个维度拼接在一起,生成一个新的 6 × 5 6 \times 5 6×5 数组。这个操作保留了每个块的行和列结构,只是简单地将它们堆叠起来。
original_array.reshape(-1, 5)
要将一个形状为 2 × 3 × 5 2 \times 3 \times 5 2×3×5 的数组拼接成一个形状为 6 × 5 6 \times 5 6×5 的数组,可以通过将前两个维度 “平铺” 成一个维度来实现。这可以通过使用 NumPy 的 reshape
或 reshape
和 swapaxes
组合来实现。以下是详细的步骤和代码:
示例代码:
import numpy as np# 创建一个 2x3x5 的示例数组
original_array = np.arange(30).reshape(2, 3, 5)# 将数组重新形状为 6x5
reshaped_array = original_array.reshape(-1, 5)# 打印结果
print("Original Array (2x3x5):\n", original_array)
print("\nReshaped Array (6x5):\n", reshaped_array)
代码解释:
- 创建原始数组:
original_array
是一个形状为 2 × 3 × 5 2 \times 3 \times 5 2×3×5的数组,其中有 2 个块(深度),每个块包含 3 行,每行有 5 列。 - 重塑数组:
reshaped_array = original_array.reshape(-1, 5)
通过将第一个和第二个维度 “平铺” 成一个维度,创建一个形状为 6 × 5 6 \times 5 6×5 的数组。-1
表示让 NumPy 自动计算该维度的大小,因此2 * 3 = 6
,数组被展平为 6 行,每行有 5 列。
这样,您就可以将原始的 2 × 3 × 5 2 \times 3 \times 5 2×3×5数组转换为 6 × 5 6 \times 5 6×5 的数组。这个操作在保持数组数据顺序不变的情况下,将数组的形状调整为新的形状。
vstack((array1, array2))
将两个形状为 3 × 5 3 \times 5 3×5 的数组垂直拼接成一个形状为 6 × 5 6 \times 5 6×5的数组:
import numpy as np# 创建两个 3x5 的示例数组
array1 = np.arange(15).reshape(3, 5)
array2 = np.arange(15, 30).reshape(3, 5)# 拼接数组
result_array = np.vstack((array1, array2))print("Array 1:\n", array1)
print("\nArray 2:\n", array2)
print("\nResult Array:\n", result_array)
在这段代码中:
array1
和array2
是两个形状为 3 × 5 3 \times 5 3×5 的数组。- 使用
np.vstack((array1, array2))
将这两个数组垂直堆叠,形成一个新的形状为 6 × 5 6 \times 5 6×5 的数组result_array
。
np.vstack
函数用于沿着垂直(第一个)轴堆叠数组,它接受一个数组列表作为参数。您可以在本地环境中运行此代码以验证结果。