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

Python NumPy 标准数据生成:高效创建与操作数组

Python NumPy 标准数据生成:高效创建与操作数组

文章目录

  • Python NumPy 标准数据生成:高效创建与操作数组
      • 一 主要涉及功能
      • 二 初始化数据
        • 1 初始值为 `0` 或 `1` 的数据
        • 2 初始化指定数值
      • 三 复刻形状和类型
      • 四 创建规则数据
      • 五 快速创建再添加值
        • 1 快速创建数组
        • 2 np.empty 和 np.ones 对比
        • 3 使用场景
      • 六 完整代码示例
      • 七 源码地址

本文介绍如何使用 Python 的 NumPy 库高效生成各种标准数据数组,包括全零、全一、指定数值的数组,以及根据现有数组形状快速创建新数组。我们探讨了常用的数组创建方法,如 np.zeros()np.ones()np.full() 等,展示了如何使用 np.arange()np.linspace() 生成规则数据。通过 np.empty() 方法可以快速初始化数组,占用更少时间,非常适用于大规模数据的初始化和后续赋值操作。本文为你提供创建高效且灵活的数据数组的完整指南。

导入 numpy

import numpy as np

一 主要涉及功能

创建统一数据创建规则数据快速创建再添加值
np.zeros(), np.ones(), np.full()np.arange()np.empty()
np.zeros_like(), np.ones_like()np.linspace()np.empty_like()
np.full_like()

二 初始化数据

1 初始值为 01 的数据
# 初始化 Array 全 0 或者全 1 的数据
zeros = np.zeros([2, 3])
print("zeros:\n", zeros)
ones = np.ones([3, 2])
print("\nones:\n", ones)
2 初始化指定数值
# 初始化指定数值
nines = np.full([2, 3], 9)
print(nines)

三 复刻形状和类型

data = np.array([[1, 2, 3],[4, 5, 6]
], dtype=np.int64)ones = np.ones(data.shape, dtype=data.dtype)
# 复刻形状和类型
# 返回与给定数组具有相同形状和类型的数组,初始化值为 1
ones_like = np.ones_like(data)print("ones:", ones.shape, ones.dtype)
print("ones_like:", ones_like.shape, ones_like.dtype)
print("ones_like value:\n", ones_like)
print(np.zeros_like(data))
print(np.full_like(data, 6))

使用 np.ones_like 函数返回与给定数组具有相同形状和类型的数组,初始化值为 1 。

四 创建规则数据

print("python range:", list(range(5)))
print("numpy arange:", np.arange(5))print("python range:", list(range(3, 10, 2)))
print("numpy arange:", np.arange(3, 10, 2))
# (start, end, num)
print("linspace:", np.linspace(-1, 1, 5))
print("5 segments:", np.linspace(-1, 1, 5, endpoint=False))

np.linspace(-1, 1, 5) 的区间为 [-1,1]np.linspace(-1, 1, 5, endpoint=False) 的区间为 [-1,1)

五 快速创建再添加值

1 快速创建数组
# 快速创建再添加值,忽略生成的乱数据。这个不能当作随机数使用。
print(np.empty([4, 3]))
2 np.empty 和 np.ones 对比
t0 = time.time()for _ in range(1000):_ = np.ones([100, 100])t1 = time.time()
for _ in range(1000):_ = np.empty([100, 100])t2 = time.time()
print("ones time:", t1 - t0)
print("empty time:", t2 - t1)

运行结果

ones time: 0.0019249916076660156
empty time: 0.0001499652862548828
3 使用场景

使用场景快速初始化指定形状的数据,并进行赋值。

# 快速初始化对应形状的数据
empty1 = np.empty([2, 3], dtype=float)
print("empty before:\n", empty1)
data = np.arange(6).reshape([2, 3])
print(data)
for i in range(data.shape[0]):for j in range(data.shape[1]):empty1[i, j] = data[i, j] * random.random()
print("empty after:\n", empty1)

六 完整代码示例

# This is a sample Python script.# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import numpy as np
import time
import randomdef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.# 创建统一数据# 初始化 Array 全 0 或者全 1 的数据zeros = np.zeros([2, 3])print("zeros:\n", zeros)ones = np.ones([3, 2])print("\nones:\n", ones)# 初始化指定数值nines = np.full([2, 3], 9)print(nines)data = np.array([[1, 2, 3],[4, 5, 6]], dtype=np.int64)ones = np.ones(data.shape, dtype=data.dtype)# 复刻形状和类型# 返回与给定数组具有相同形状和类型的数组,初始化值为 1ones_like = np.ones_like(data)print("ones:", ones.shape, ones.dtype)print("ones_like:", ones_like.shape, ones_like.dtype)print("ones_like value:\n", ones_like)print(np.zeros_like(data))print(np.full_like(data, 6))# 创建规则数据print("python range:", list(range(5)))print("numpy arange:", np.arange(5))print("python range:", list(range(3, 10, 2)))print("numpy arange:", np.arange(3, 10, 2))# (start, end, num)print("linspace:", np.linspace(-1, 1, 5))print("5 segments:", np.linspace(-1, 1, 5, endpoint=False))# 快速创建再添加值print(np.empty([4, 3]))t0 = time.time()for _ in range(1000):_ = np.ones([100, 100])t1 = time.time()for _ in range(1000):_ = np.empty([100, 100])t2 = time.time()print("ones time:", t1 - t0)print("empty time:", t2 - t1)print()# 快速初始化对应形状的数据empty1 = np.empty([2, 3], dtype=float)print("empty before:\n", empty1)data = np.arange(6).reshape([2, 3])print(data)for i in range(data.shape[0]):for j in range(data.shape[1]):empty1[i, j] = data[i, j] * random.random()print("empty after:\n", empty1)# Press the green button in the gutter to run the script.
if __name__ == '__main__':print_hi('标准数据生成')# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。

Hi, 标准数据生成
zeros:[[0. 0. 0.][0. 0. 0.]]
ones:[[1. 1.][1. 1.][1. 1.]]
[[9 9 9][9 9 9]]
ones: (2, 3) int64
ones_like: (2, 3) int64
ones_like value:[[1 1 1][1 1 1]]
[[0 0 0][0 0 0]]
[[6 6 6][6 6 6]]
python range: [0, 1, 2, 3, 4]
numpy arange: [0 1 2 3 4]
python range: [3, 5, 7, 9]
numpy arange: [3 5 7 9]
linspace: [-1.  -0.5  0.   0.5  1. ]
5 segments: [-1.  -0.6 -0.2  0.2  0.6]
[[0. 0. 0.][0. 0. 0.][0. 0. 0.][0. 0. 0.]]
ones time: 0.002431154251098633
empty time: 0.00015401840209960938
empty before:[[3.e-323 3.e-323 3.e-323][3.e-323 3.e-323 3.e-323]]
[[0 1 2][3 4 5]]
empty after:[[0.         0.8510451  0.21886624][1.83377276 1.97903545 2.67662559]]

七 源码地址

代码地址:

国内看 Gitee 之 numpy/标准数据生成.py

国外看 GitHub 之 numpy/标准数据生成.py

引用 莫烦 Python

相关文章:

  • SQL Server实现limit用法
  • 初识chatgpt
  • cnn机器学习时python版本不兼容报错
  • Android 10.0 Launcher3禁止改变density等系统密度导致布局变化hotseat靠右边显示功能实现
  • 查询最近正在执行的sql(DM8 : 达梦数据库)
  • Electron 隐藏顶部菜单
  • Docker的安装和使用
  • 一文详解大语言模型Transformer结构
  • LangGPT结构化提示词编写实践
  • 金融教育宣传月 | 平安养老险百色中心支公司开展金融知识“消保县域行”宣传活动
  • 如何使用ssm实现个人日常事务管理系统+vue
  • 【数据结构与算法 | 灵神题单 | 栈基础篇】力扣155, 1472, 1381
  • Python 将数据写入 excel(新手入门)
  • mac Wireshark You do not have permission to capture on device “rvio“.
  • MMD模型及动作一键完美导入UE5-Blender方案(三)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • ➹使用webpack配置多页面应用(MPA)
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android优雅地处理按钮重复点击
  • avalon2.2的VM生成过程
  • DataBase in Android
  • django开发-定时任务的使用
  • Java,console输出实时的转向GUI textbox
  • Linux CTF 逆向入门
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Webpack 4 学习01(基础配置)
  • webpack入门学习手记(二)
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 码农张的Bug人生 - 初来乍到
  • 实战|智能家居行业移动应用性能分析
  • 使用Gradle第一次构建Java程序
  • 项目管理碎碎念系列之一:干系人管理
  • 进程与线程(三)——进程/线程间通信
  • 说说我为什么看好Spring Cloud Alibaba
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (1)Android开发优化---------UI优化
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (pytorch进阶之路)扩散概率模型
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (四)库存超卖案例实战——优化redis分布式锁
  • (算法)前K大的和
  • (转)memcache、redis缓存
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (自适应手机端)行业协会机构网站模板
  • *** 2003
  • .NET 4.0中的泛型协变和反变
  • .NET CF命令行调试器MDbg入门(一)
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 发展历程
  • .Net 路由处理厉害了