当前位置: 首页 > news >正文

numpy学习笔记3:三维数组 np.ones((2, 3, 4)) 的详细解释

numpy学习笔记3:三维数组 np.ones((2, 3, 4)) 的详细解释

以下是关于三维数组 np.ones((2, 3, 4)) 的详细解释:


1. 三维数组的形状

形状 (2, 3, 4) 表示:

  • 最外层维度:2 个“层”(或“块”);

  • 中间维度:每个层有 3 行;

  • 最内层维度:每行有 4 个元素。

可以类比为:

  • 2 本书(外层),每本书有 3 页(中间层),每页有 4 行文字(内层)。


2. 创建全 1 三维数组

代码示例:

import numpy as np

# 生成形状为 (2, 3, 4) 的全 1 三维数组
arr_3d = np.ones((2, 3, 4), dtype=float)
print(arr_3d)

输出结果

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

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]
可视化结构
第0层(块):
   行0 → [1, 1, 1, 1]
   行1 → [1, 1, 1, 1]
   行2 → [1, 1, 1, 1]

第1层(块):
   行0 → [1, 1, 1, 1]
   行1 → [1, 1, 1, 1]
   行2 → [1, 1, 1, 1]

3. 索引与切片

(1) 访问元素
  • 语法arr_3d[层索引, 行索引, 列索引]

  • 示例

    print(arr_3d[0, 1, 2])  # 输出第0层、第1行、第2列的元素 → 1.0
(2) 切片操作
# 获取第0层的所有行和列
layer_0 = arr_3d[0, :, :]  # 形状为 (3, 4)

# 获取所有层的第1行
row_1_all_layers = arr_3d[:, 1, :]  # 形状为 (2, 4)

# 获取所有层、所有行的前2列
cols_0_1 = arr_3d[:, :, 0:2]  # 形状为 (2, 3, 2)

4. 应用场景

(1) 批量数据处理
  • 深度学习:一批次输入数据(如 2 张图像,每张图像为 3x4 的像素矩阵)。

  • 时间序列:多个时间步的数据(如 2 天,每天 3 个时间段,每个时间段 4 个指标)。

(2) 多通道数据
  • 图像处理:RGB 图像扩展为多个通道(如 2 个滤镜处理后的图像,每个滤镜结果存储为一层)。

(3) 科学计算
  • 物理模拟:三维空间中的温度分布(如 2 个时间点,每个时间点的 3x4 网格温度值)。


5. 属性验证

print("形状(shape):", arr_3d.shape)   # 输出 (2, 3, 4)
print("数据类型(dtype):", arr_3d.dtype)  # 输出 float64
print("维度数(ndim):", arr_3d.ndim)    # 输出 3(三维)
print("元素总数(size):", arr_3d.size)   # 输出 2*3*4 = 24

6. 扩展操作

(1) 与其他函数结合
  • 生成特定值的三维数组

    # 生成全 5 的三维数组
    arr_5 = 5 * np.ones((2, 3, 4))
(2) 维度变换
# 将三维数组展平为一维
flattened = arr_3d.flatten()  # 形状 (24,)

# 转换为四维数组(添加新维度)
arr_4d = arr_3d.reshape(2, 3, 4, 1)  # 形状 (2, 3, 4, 1)

7. 常见问题

Q1:三维数组在内存中如何存储?
  • NumPy 默认按行优先(order='C')连续存储。三维数组可视为多个二维数组的堆叠。

Q2:如何生成不同数据类型的全 1 三维数组?
  • 指定 dtype 参数:

    # 生成整数类型三维数组
    int_arr = np.ones((2, 3, 4), dtype=int)  # 所有元素为 1(非 1.0)
Q3:三维数组和嵌套列表的区别?
  • NumPy 数组是连续内存的高效结构,支持向量化操作;嵌套列表灵活但效率低。


通过 np.ones((2, 3, 4)),你可以轻松创建符合需求的三维数据结构,适用于复杂科学计算和工程场景!

相关文章:

  • 汽车相关液体介绍
  • MinIO Docker
  • Linux性能监控工具nmon安装及使用
  • 3.20-1ui自动化切换,登录退出
  • Object 转 JSONObject 并排除null和““字符串
  • 应急响应笔记
  • stm32 2.0.3.0
  • python-leetcode 60.分割回文串
  • K8S中若要挂载其他命名空间中的 Secret
  • h265 flv.js组件封装Vue3
  • 【软考-架构】8.4、信息化战略规划-CRO-SCM-应用集成-电子商务
  • 【Linux】VMware17 安装 Ubuntu24.04 虚拟机
  • Ubutu20.04安装docker与docker-compose
  • Spring Boot 异步返回对象深度解析
  • #pandas #python#数据标注 pd.crosstab()
  • STM32U575RIT6单片机(四)
  • 嵌入式c学习七
  • 企业架构与IT方法论:现代企业的基石
  • SQLark 实战 | 如何通过对象名和 DDL 快速搜索数据库对象
  • Unity TextMeshPro中显示建筑特殊符号
  • 三方合作会否受政局变化影响?“中日韩+”智库合作论坛在沪举行
  • 柬埔寨果农:期待柬埔寨榴莲走进中国市场
  • 大风+暴雨,中央气象台双预警齐发
  • 2人恶意传播刘国梁谣言被处罚,媒体:以法律利剑劈谣斩邪,加快推进依法治体
  • 中国驻美大使:远离故土的子弹库帛书正随民族复兴踏上归途
  • 国家防汛抗旱总指挥部对15个重点省份开展汛前实地督导检查