0

0

NumPy怎么生成全0数组_np.zeros()与np.ones()预分配内存创建

P粉602998670

P粉602998670

发布时间:2026-03-15 11:41:02

|

910人浏览过

|

来源于php中文网

原创

np.zeros()的shape参数必须为元组或列表,单数字如np.zeros(5)虽可运行但易误解;正确写法为np.zeros((3,4))等;dtype需按需指定以节省内存和避免精度问题;其预分配并初始化为0,不同于np.empty();reshape可能触发隐式拷贝,应优先在zeros中直接指定shape。

numpy怎么生成全0数组_np.zeros()与np.ones()预分配内存创建

np.zeros() 的 shape 参数必须是元组或列表,不是单个数字

很多人写 np.zeros(5) 想生成长度为 5 的一维数组,这其实能运行,但容易误以为 np.zeros(3, 4) 也能生成 3×4 数组——它会直接报错:TypeError: function missing 1 required positional argument: 'shape'。因为 np.zeros() 只接受一个位置参数 shape,其余都是关键字参数。

正确写法必须显式传入序列类型:

  • np.zeros(5) → 一维,等价于 np.zeros((5,))
  • np.zeros((3, 4)) → 二维,3 行 4 列
  • np.zeros([2, 3, 4]) → 三维,也合法(列表和元组都支持)

漏掉括号是新手最常踩的坑,尤其从 MATLAB 或 Python 原生 list 习惯切换过来时。

dtype 不指定时默认是 float64,整数场景要手动设

如果你要存索引、类别 ID 或做位运算,用 np.zeros(1000000) 默认得到的是 float64 数组,内存占用翻倍(8 字节/元素),还可能引入浮点精度干扰(比如后续做 == 判断)。

按需指定 dtype 才是常态:

  • 索引/计数:np.zeros(1000, dtype=int) → 实际为 int64(平台相关)
  • 节省内存的整数:np.zeros(1000, dtype=np.int32)
  • 布尔掩码:np.zeros(1000, dtype=bool)(注意:0 → False,非 0 → True)
  • 与已有数组保持一致:np.zeros_like(x, dtype=x.dtype)

不写 dtype 看似省事,但在大数据或嵌入式部署里,可能让内存多占 50%~100%。

np.zeros() 和 np.ones() 都是预分配,但不会初始化为“安全值”

它们确实提前划好内存块,避免循环中反复 realloc,这是性能关键。但要注意:预分配 ≠ 安全初始化。比如 np.zeros((1000, 1000), dtype=np.float32) 确实每个元素都是 0.0;但如果你用 np.empty((1000, 1000)),内容就是内存垃圾——而 np.zeros() 内部其实是调用 memset(0),所以它慢一点,但值确定。

灵云AI开放平台
灵云AI开放平台

灵云AI开放平台

下载

别混淆“预分配”和“未初始化”:

  • np.zeros():预分配 + 全 0(安全,稍慢)
  • np.ones():预分配 + 全 1(安全,稍慢)
  • np.empty():只预分配,不填值(最快,但值不可控)

线上服务里曾有人用 np.empty() 替换 np.zeros() 想提速,结果因未清零导致偶发计算错误,排查三天才发现是某次分支没覆盖到赋值逻辑。

创建空数组后立即 reshape 可能触发 copy,小心隐式内存开销

np.zeros(12).reshape(3, 4) 看似自然,但 NumPy 不保证返回视图(view)。如果原始一维数组内存不连续(极少见),或者 reshape 涉及转置逻辑,reshape() 可能返回 copy——这意味着额外一次内存分配和拷贝。

更稳妥的做法是直接在 zeros() 里定好 shape:

  • ✅ 推荐:np.zeros((3, 4))
  • ⚠️ 谨慎:np.zeros(12).reshape(3, 4)(除非你明确知道数据布局且做了测试)
  • ? 验证是否为 view:a = np.zeros(12); b = a.reshape(3, 4); b.base is a → True 表示是视图

批量生成数组时,少一层 reshape 就少一分意外;形状已知就别拆成两步。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
fprintf在matlab中的用法
fprintf在matlab中的用法

fprintf是MATLAB中用于格式化输出的函数。fprintf的基本语法为“fprintf(fileID, format, A)”,其中,fileID是一个标识符,用于指定要写入的文件,如果要将数据写入到命令窗口中,则可以使用1作为fileID的值,format是一个字符串,用于指定输出的格式,A是要输出的数据。

505

2023.09.28

数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1135

2023.10.12

Matlab中length函数的用法
Matlab中length函数的用法

在Matlab中,length函数用于返回向量、数组或字符串中的元素个数。想了解更多length函数的相关内容,可以阅读本专题下面的文章。

334

2023.11.22

Matlab中axis函数用法
Matlab中axis函数用法

在Matlab中,axis函数用于控制坐标轴的范围和比例。想了解更多axis函数的相关内容,可以阅读本专题下面的文章。

784

2023.11.23

subplot在matlab中的用法
subplot在matlab中的用法

subplot在matlab中用于在同一个图窗中创建多个子图。通过指定子图的行数、列数和当前绘图位置,可以在每个子图中绘制不同的图形。想了解更多subplot在matlab中的用法,可以访问下面的文章。

152

2023.11.27

scilab和matlab的区别
scilab和matlab的区别

scilab和matlab的区别:1、注释符号;2、预设变量的表示;3、操作符的用法;4、矩阵的定义与调用;5、程序的编辑与执行;6、数据类型;7、函数库;8、图形界面;9、社区支持与生态系统;10、跨平台兼容性;11、价格。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

194

2023.12.11

Matlab如何四舍五入
Matlab如何四舍五入

Matlab可以通过round函数和格式化输出函数来对数值来进行四舍五入操作。更多关于Matlab相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

431

2023.12.12

Matlab中axis函数用法介绍
Matlab中axis函数用法介绍

在Matlab中,axis函数用于设置当前坐标轴的范围和刻度。想了解更多axis函数的相关内容,可以阅读本专题下面的文章。

163

2023.12.13

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

69

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号