Numpy:将3D Numpy数组转换为2D

Numpy:将3D Numpy数组转换为2D

在本文中,我们将介绍如何将3D Numpy数组转换为2D。可能有多个原因需要这样做,其中一个主要原因是更方便地将数据传递给机器学习算法。

阅读更多:Numpy 教程

什么是3D和2D Numpy数组?

在深入探讨如何将3D Numpy数组转换为2D之前,让我们先简要介绍一下3D和2D Numpy数组。

一个Numpy数组是一个多维数组对象,它由称为维度的轴组成。在2D Numpy数组中,有两个轴表示为行和列。

例如,以下是一个2D Numpy数组,其中每行表示一组数据,每列表示一个特征:

import numpy as np

arr = np.array([
    [1,2,3],
    [2,3,4],
    [3,4,5]
])

print(arr)

输出结果:

array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5]])

在3D Numpy数组中,我们有一个额外的轴,通常表示为深度。

例如,以下是一个3D Numpy数组,其中每个深度表示一个二维平面:

arr = np.array([
    [[1,2,3],
     [2,3,4],
     [3,4,5]],
    [[6,7,8],
     [7,8,9],
     [8,9,10]]
])

print(arr)

输出结果:

array([[[ 1,  2,  3],
        [ 2,  3,  4],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 7,  8,  9],
        [ 8,  9, 10]]])

如何将3D Numpy数组转换为2D

现在,让我们看看如何将3D Numpy数组转换为2D。

一个简单的方法是使用Numpy库中的reshape()函数。该函数允许我们重新设置数组的形状,同时保持其元素数量不变。

arr = np.array([
    [[1,2,3],
     [2,3,4],
     [3,4,5]],
    [[6,7,8],
     [7,8,9],
     [8,9,10]]
])

# 通过将形状更改为(6,3),我们可以将3D数组转换为2D数组
new_arr = arr.reshape(6,3)

print(new_arr)

输出结果:

array([[ 1,  2,  3],
       [ 2,  3,  4],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10]])

上面的示例中,我们将3D Numpy数组通过将其形状更改为(6,3)转换为2D数组。注意,这里的元素数仍然保持不变,但轴数由3变为2。

如果你想将3D数组按深度轴进行堆叠,成为2D数组的“宽度”,可以使用vstack()函数:

arr = np.array([
    [[1,2,3],
     [2,3,4],
     [3,4,5]],
    [[6,7,8],
     [7,8,9],
     [8,9,10]]
])

new_arr = np.vstack(arr)

print(new_arr)

输出结果:

array([[ 1,  2,  3],
       [ 2,  3,  4],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10]])

将2D Numpy数组转换为3D

我们已经介绍了如何将3D Numpy数组转换为2D,那么我们也可以使用相同的方法将2D Numpy数组转换为3D。

例如,以下是一个2D Numpy数组:

arr = np.array([
    [1,2,3],
    [2,3,4],
    [3,4,5],
    [6,7,8],
    [7,8,9],
    [8,9,10]
])

现在,我们可以通过将其形状更改为(2,3,3)来将其转换为3D Numpy数组:

new_arr = arr.reshape(2,3,3)

print(new_arr)

输出结果:

array([[[ 1,  2,  3],
        [ 2,  3,  4],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 7,  8,  9],
        [ 8,  9, 10]]])

在上面的示例中,我们将2D Numpy数组通过将其形状更改为(2,3,3)转换为3D数组。

总结

在本文中,我们介绍了如何将3D Numpy数组转换为2D或将2D Numpy数组转换为3D。通过使用Numpy中的reshape()vstack()函数,我们可以很容易地转换数组的形状,使其更适合我们需要使用的数据结构和算法。

虽然在某些情况下,改变数组的形状可能需要花费一些时间和计算资源,但由于Numpy数组的优秀性能和广泛的支持,这些问题很少成为瓶颈。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程