当前位置: 首页 > 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


http://www.mrgr.cn/news/39209.html

相关文章:

  • 泛型中的通配符<?>、<? extends T>、<? super T>的使用场景。ArrayList与LinkedList的区别及适用场景。
  • 计算机知识科普问答--22(106-110)
  • 【Android 14源码分析】Activity启动流程-2
  • LeetCode 每日一题 买票需要的时间
  • 不同的子序列
  • elastic search 后端启动成功标志(二)
  • NLP任务之预测最后一个词
  • 程序员数学 | 用递归将复杂的问题简单化(上)
  • 企业如何提升知识产权管理效率?
  • rocketmq集群模式介绍
  • 【AI大模型】Function Calling
  • Python NumPy 读取与保存数据:高效处理数据文件
  • 九块九付费进群系统 wxselect SQL注入漏洞
  • Foo a30 = Foo(123);会调用哪些构造函数
  • 第十四周学习周报
  • 先刮腻子还是先装柜子好呢?
  • 系统数据文件和信息
  • 从传统 RAG 到图 RAG,赋予大型语言模型更强大的知识力量
  • Unity3D 创建一个人物,实现人物的移动
  • C++中的多态(详细讲解)