NumPy 三维数组

NumPy 数组可以是多维的。其中,三维数组是 NumPy 数组的一种形式,它由多个二维数组组成。

NumPy 创建三维数组

NumPy 中有多种创建三维数组的方法,比如可以使用 numpy.array() 函数从 “列表” 或 “元组” 创建三维数组,也可以使用 NumPy 内置函数创建特定的三维数组。

1. 使用 numpy.array() 函数

在 NumPy 中,我们可以使用 numpy.array() 函数从嵌套列表或元组创建三维数组。

示例 1:numpy.array() 创建三维数组

import numpy as np

# 创建一个 2x2x2 的三维数组
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr)

运行结果如下。

[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

分析:

numpy.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) 表示创建一个 2 x 2 x 2 的三维数组。

2. 使用 NumPy 内置函数

NumPy 提供了一些内置函数,可以用于创建特定的三维数组,比如:

  • numpy.zeros():创建全 0 的三维数组。
  • numpy.ones():创建全 1 的三维数组。

示例 2:NumPy 创建特殊三维数组

import numpy as np

arr1 = np.zeros((2, 2, 3))      # 创建一个 2×2×3 的全 0 数组
arr2 = np.ones((2, 3, 4))       # 创建一个 2×3×4 的全 1 数组

print(arr1)
print(arr2)

运行结果如下。

[[[0. 0. 0.]
  [0. 0. 0.]]
 [[0. 0. 0.]
  [0. 0. 0.]]]

[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]
 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]

分析:

numpy.zeros((2, 2, 3)) 创建了一个 2 x 2 x 3 的全 0 数组,numpy.ones((2, 3, 4)) 创建了一个 2 x 3 x 4 的全 1 数组。

NumPy 三维数组的属性

NumPy 三维数组有很多属性,常用的如下表所示。

NumPy 三维数组的属性
属性 说明
ndim 维度的个数,即多少维
shape 数组的形状,比如 m 行 n 列
size 元素的个数
dtype 元素的类型

示例 3:三维数组的属性

import numpy as np

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

print('数组的维度个数为:', arr.ndim)
print('数组的形状为:', arr.shape)
print('数组的元素个数为:', arr.size)
print('数组的元素类型为:', arr.dtype)

运行结果如下。

数组的维度个数为:3
数组的形状为:(2, 2, 2)
数组的元素个数为:8
数组的元素类型为:int64

分析:

其中,数组 arr 的形状为 (2, 2, 2),表示它是一个 2 × 2 × 2 的三维数组。

NumPy 三维数组的索引和切片

在 NumPy 中,三维数组的索引和切片与 Python 列表类似,我们可以通过指定行和列的索引来访问数组元素。

提示: 如果小伙伴们对 Python 列表切片了解不够透彻,另请参阅:Python 列表切片

示例 4:三维数组的索引和切片

import numpy as np

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

print(arr[0, 0, 0])      # 获取第一个二维数组中第 1 行第 1 列的元素
print(arr[0, :, :])      # 获取第一个二维数组的所有元素
print(arr[:, 0, :])      # 输出所有二维数组中第 1 行的所有元素

运行结果如下。

1
[[1 2]
 [3 4]]
[[1 2]
 [5 6]]

分析:

arr[0, 0, 0] 表示获取数组 arr 中第一个二维数组中第 1 行第 1 列的元素,arr[0, :, :] 表示获取数组 arr 中第一个二维数组的所有元素,arr[:, 0, :] 表示获取数组 arr 中所有二维数组中第 1 行的所有元素。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号