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

numpy学习笔记2:ones = np.ones((2, 4)) 的详解

numpy学习笔记2:ones = np.ones((2, 4)) 的详解

np.ones() 是 NumPy 中用于创建全 1 数组的核心函数,其用法和参数与 np.zeros() 类似,但生成的数组元素值全部为 1。以下是详细解释:


1、语法

numpy.ones(shape, dtype=float, order='C')
  • 作用:生成一个指定形状和数据类型的全 1 数组。

  • 参数

    • shape:数组的形状,以元组形式传递(如 (2,4) 表示 2 行 4 列的二维数组)。

    • dtype(可选):数组的数据类型,默认为 float(浮点数)。

    • order(可选):内存存储顺序,一般无需修改('C' 表示行优先,'F' 表示列优先)。


2、示例代码

import numpy as np

# 创建一个 2x4 的全 1 数组,默认数据类型为 float
ones_array = np.ones((2, 4))
print(ones_array)

输出

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

3、参数详解

1. 形状参数 shape
  • 必须是一个元组,表示数组的维度。

  • 一维数组

    np.ones(5)       # 输出:[1. 1. 1. 1. 1.]
    np.ones((5,))    # 推荐显式写法
  • 高维数组

    # 三维数组(形状为 2x3x4)
    np.ones((2, 3, 4))
2. 数据类型 dtype
  • 默认生成浮点数(float64),可通过 dtype 指定其他类型:

    # 生成整数类型的全 1 数组
    int_ones = np.ones((3, 2), dtype=int)
    print(int_ones)

    输出

    [[1 1]
     [1 1]
     [1 1]]
3. 存储顺序 order
  • 默认 'C'(行优先存储),适用于大多数场景。'F' 表示列优先(类似 MATLAB)。


4、返回数组的属性验证

ones_array = np.ones((2, 4))

print("形状(shape):", ones_array.shape)  # 输出 (2, 4)
print("数据类型(dtype):", ones_array.dtype)  # 输出 float64
print("维度数(ndim):", ones_array.ndim)   # 输出 2(二维)
print("元素总数(size):", ones_array.size)  # 输出 8

5、应用场景

  1. 初始化基准值

    # 初始化神经网络权重(全 1 作为初始值)
    weights = np.ones((10, 5))  # 10 个神经元,5 个输入
  2. 模板生成

    # 创建掩模模板(全 1 表示保留区域)
    mask = np.ones((100, 100), dtype=bool)
    mask[20:80, 20:80] = False  # 中心区域设为 False
  3. 数值计算占位

    # 计算单位矩阵(利用全 1 数组)
    identity_matrix = np.ones((3, 3)) - np.eye(3)

6、常见问题

Q1:np.ones() 和 np.zeros() 的区别?
  • np.ones() 初始化为 1,np.zeros() 初始化为 0。其他参数和用法完全一致。

Q2:如何生成全 1 的布尔数组?
  • 设置 dtype=bool,但注意:1 在布尔类型中会转换为 True

    bool_ones = np.ones((2, 2), dtype=bool)
    print(bool_ones)

    输出

    [[ True  True]
     [ True  True]]
Q3:为什么 shape=(2,4) 生成的是 2 行 4 列?
  • NumPy 遵循 (行, 列) 的约定,与数学中的矩阵表示一致。


7、对比其他函数

函数功能初始化值
np.ones()创建全 1 数组1
np.zeros()创建全 0 数组0
np.empty()创建未初始化数组随机值
np.full()创建全为指定值的数组自定义值

通过 np.ones(),你可以快速生成任意形状的全 1 数组,适用于初始化、模板生成等场景。

相关文章:

  • PostgreSQL中array_to_string函数来将数组转换成逗号分隔的字符串
  • C#:深入理解Thread.Sleep与Task.Delay
  • 类和对象C++
  • 鸿蒙数据持久化之首选项
  • WebGL学习2
  • Echarts 折线图
  • 【Linux笔记】动态库与静态库的理解与加载
  • 《数字图像处理》第三章 灰度变换与空间滤波学习笔记(3.1-3.2)反转、对数、幂律、分段线性等变换
  • 【QT:QSS】
  • 在 MySQL 中,只写 JOIN 等价于?
  • linux 命令 mkdir
  • Spring中DI与IOC的关系解析
  • 卷积神经网络 - 卷积层(具体例子)
  • 第六节 MATLAB M-Files
  • MySQL 关联查询知识
  • 网络篇--网络基础
  • Fortinet全新下一代防火墙NGFW
  • LS-NET-008-OSPF、BGP、RIP三大路由协议
  • 【css酷炫效果】纯CSS实现黑白电视故障雪花
  • 腾讯云容器集群:节点可以访问公网,节点内的pod无法访问公网
  • 塘沽网站建设/软件拉新推广平台
  • ps和dw怎么做网站/在线seo短视频
  • web 网页设计/优化公司哪家好
  • 长沙seo行者seo09/免费seo网站自动推广
  • 长沙网站排名团队/win7优化大师免安装版
  • 做ppt的素材免费网站/seo运营