在NumPy中,数组的维度(dimension)指的是数组的轴(axes)的数量。维度也可以理解为数组的秩(rank)。数组的维度决定了它的形状(shape)。

NumPy中的数组可以是一维的、二维的、三维的,甚至可以有更高的维度。让我们逐个了解这些维度。

  1. 一维数组(1D):一维数组是最简单的数组形式,它只有一个轴。可以将一维数组想象成线性排列的元素序列。例如:

    import numpy as np
    
    a = np.array([1, 2, 3, 4, 5])
    print(a.shape)  # 输出 (5,)
    
  2. 二维数组(2D):二维数组具有两个轴,通常可以看作是矩阵。它有行(row)和列(column)两个维度。例如:

    import numpy as np
    
    b = np.array([[1, 2, 3], [4, 5, 6]])
    print(b.shape)  # 输出 (2, 3)
    
  3. 三维数组(3D):三维数组有三个轴,可以看作是多个二维数组组成的集合。例如:

    import numpy as np
    
    c = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
    print(c.shape)  # 输出 (2, 2, 3)
    

除了以上的维度,NumPy还支持更高维度的数组。

在NumPy中,可以使用.ndim属性获取数组的维度数,使用.shape属性获取数组的形状。.shape返回一个元组,元组中的每个元素表示相应轴上的尺寸。

可以通过改变数组的形状来改变维度,例如使用.reshape()方法。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
# 输出:
# [[1 2 3]
#  [4 5 6]]
print(b.shape)  # 输出 (2, 3)

NumPy的多维数组在科学计算和数据处理中非常有用,它可以存储和操作多维数据,例如图片、音频、视频等。理解数组的维度有助于正确处理数据和实现相应的运算。

维度操作

当使用NumPy处理多维数组时,理解和操作数组的维度是非常重要的。下面是一些与NumPy的维度相关的重要概念,包括创建、添加、合并和观察数组的形状。

  1. 创建数据:要创建一个NumPy数组,可以使用np.array()函数。这个函数接受一个序列对象(如列表或元组)作为输入,并将其转换为NumPy数组。例如:

    import numpy as np
    
    data = [1, 2, 3, 4, 5]
    array = np.array(data)
    print(array)
    # 输出: [1 2 3 4 5]
    
  2. array.ndim: 使用.ndim属性可以获取数组的维度数。它返回一个整数,表示数组的轴数(维度)。例如:

    import numpy as np
    
    array = np.array([[1, 2, 3], [4, 5, 6]])
    print(array.ndim)
    # 输出: 2
    
  3. 添加数据:在处理数组时,有时需要在现有数组的末尾添加额外的数据。可以使用np.concatenate()函数将两个或多个数组沿着指定的轴连接起来。另外,也可以使用np.expand_dims()函数在指定的轴上扩展数组的维度。例如:

    import numpy as np
    
    array1 = np.array([1, 2, 3])
    array2 = np.array([4, 5, 6])
    concatenated = np.concatenate((array1, array2))
    print(concatenated)
    # 输出: [1 2 3 4 5 6]
    
    expanded = np.expand_dims(array1, axis=0)
    print(expanded)
    # 输出: [[1 2 3]]
    
  4. 合并数据:除了np.concatenate()函数外,NumPy还提供了一些特定的函数来合并数组。np.vstack()函数用于垂直堆叠(按行堆叠)数组,而np.hstack()函数用于水平堆叠(按列堆叠)数组。例如:

    import numpy as np
    
    array1 = np.array([[1, 2, 3], [4, 5, 6]])
    array2 = np.array([[7, 8, 9], [10, 11, 12]])
    
    stacked = np.vstack((array1, array2))
    print(stacked)
    # 输出:
    # [[ 1  2  3]
    #  [ 4  5  6]
    #  [ 7  8  9]
    #  [10 11 12]]
    
    concatenated = np.concatenate((array1, array2), axis=1)
    print(concatenated)
    # 输出:
    # [[ 1  2  3  7  8  9]
    #  [ 4  5  6 10 11 12]]
    
  5. 观察形态:要了解数组的形状,可以使用.size.shape属性。.size返回数组中元素的总数,.shape返回一个元组,其中的每个元素表示相应轴上的尺寸。例如:

    import numpy as np
    
    array = np.array([[1, 2, 3], [4, 5, 6]])
    print(array.size)
    # 输出: 6
    
    print(array.shape)
    # 输出: (2, 3)
    

了解和操作NumPy数组的维度非常重要,它将帮助你正确处理数据,进行各种数组操作和数值运算。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐