numpy.empty应用指南

随着数据科学的快速发展,numpy成为了Python中最重要的科学计算包之一。numpy提供了诸多强大的功能,例如超快速的数学运算和数组处理。其中,numpy.empty是非常实用的函数之一。

一、numpy.empty概述

numpy.empty(shape, dtype=float, order=’C’)是numpy中的一个函数,它创建一个指定形状和dtype的新数组,并将其分配给新的内存块,但是不会初始化数组元素。因此,numpy.empty速度非常快,因为它不需要初始化数组。

numpy.empty创建一个指定形状和dtype的新数组,并分配内存空间。但是它不会对数组进行初始化,因此数组的元素值是未知的。这是与numpy.zeros和numpy.ones的区别。它们创建一个新数组并初始化为0或1。因此,numpy.empty函数的速度比numpy.zeros或numpy.ones更快。

import numpy as np
a = np.empty([3,2], dtype = int)
print(a)

输出结果如下:

array([[811652128,         0],
       [         0,         0],
       [         0,         0]])

由于未初始化数组元素,因此数组元素的值为未知值。

二、numpy.empty创建多维数组

numpy.empty也可以创建多维数组。

x = np.empty([3,2,2])
print(x)

输出结果如下:

array([[[ -3.10503618e+231,  -3.10503618e+231],
        [  2.96439388e-323,   0.00000000e+000]],

       [[  0.00000000e+000,   0.00000000e+000],
        [  0.00000000e+000,   0.00000000e+000]],

       [[  0.00000000e+000,   0.00000000e+000],
        [  0.00000000e+000,   0.00000000e+000]]])

与二维数组类似,多维数组的元素值也是随机的。

三、numpy.empty的性能优化

numpy.empty比其他创建数组的函数更快,因为它不需要为数组赋初值。

为了测试numpy.empty与numpy.zeros的性能,我们可以使用Python自带的timeit模块。在此之前,我们需要导入模块。

import timeit
setup = "import numpy as np"
stmt_numpy_zeros = "np.zeros((1000,1000))"
stmt_numpy_empty = "np.empty((1000,1000))"
print('numpy.zeros:{:.6f}\nnumpy.empty:{:.6f}'.format(
    timeit.timeit(stmt=stmt_numpy_zeros, setup=setup, number=1000),
    timeit.timeit(stmt=stmt_numpy_empty, setup=setup, number=1000)))

输出结果如下:

numpy.zeros:2.918427
numpy.empty:1.536704

可以看到,numpy.empty明显比numpy.zeros快。

四、numpy.empty的应用

(1)numpy.empty与数组的赋值

numpy.empty可以用于数组的赋值。如果需要在循环中使用numpy数组,numpy.empty会更快。

import numpy as np
a = np.empty([2,2], dtype=int)
for i in range(2):
    for j in range(2):
        a[i][j] = i+j
print(a)

输出结果如下:

array([[0, 1],
       [1, 2]])

除了可以使用数组索引进行赋值,还可以通过花式索引(fancy indexing)进行赋值。

import numpy as np
a = np.empty([3,3], dtype=int)
a[1] = [1, 2, 3]
a[2] = [4, 5, 6]
print(a)

输出结果如下:

array([[         0,          1,          1],
       [         1,          2,          3],
       [         4,          5,          6]])

(2)numpy.empty的数组拼接

numpy.empty可以用于数组的拼接。使用numpy.vstack()和numpy.hstack()函数进行数组拼接。

import numpy as np
arr1 = np.empty([3,3], dtype=int)
arr2 = np.empty([3,3], dtype=int)
arr1[:] = 1
arr2[:] = 2

print(arr1)
print(arr2)

res1 = np.vstack((arr1, arr2))
res2 = np.hstack((arr1, arr2))

print(res1)
print(res2)

输出结果如下:

array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
array([[2, 2, 2],
       [2, 2, 2],
       [2, 2, 2]])
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1],
       [2, 2, 2],
       [2, 2, 2],
       [2, 2, 2]])
array([[1, 1, 1, 2, 2, 2],
       [1, 1, 1, 2, 2, 2],
       [1, 1, 1, 2, 2, 2]])

(3)numpy.empty的数组转置

numpy.empty可以用于数组的转置。使用numpy.transpose()函数进行数组的转置运算。

arr = np.empty([3,3], dtype=int)
arr[:] = 1
print(arr)
res = np.transpose(arr)
print(res)

输出结果如下:

array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])

总结

numpy.empty是numpy中非常实用的函数之一。它创建一个指定形状和dtype的新数组,并将其分配给新的内存块,但是不会初始化数组元素。因此,numpy.empty速度非常快,因为它不需要初始化数组。

numpy.empty不会为数组元素进行初始化,数组元素的值为未知值。可以使用数组索引或花式索引对数组元素进行赋值。还可以通过numpy.vstack()和numpy.hstack()函数进行数组的拼接,也可以使用numpy.transpose()函数进行数组的转置运算。在循环中使用numpy.empty会更快。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/246350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:14
下一篇 2024-12-12 13:14

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • 运维Python和GO应用实践指南

    本文将从多个角度详细阐述运维Python和GO的实际应用,包括监控、管理、自动化、部署、持续集成等方面。 一、监控 运维中的监控是保证系统稳定性的重要手段。Python和GO都有强…

    编程 2025-04-29
  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • Python字符转列表指南

    Python是一个极为流行的脚本语言,在数据处理、数据分析、人工智能等领域广泛应用。在很多场景下需要将字符串转换为列表,以便于操作和处理,本篇文章将从多个方面对Python字符转列…

    编程 2025-04-29
  • Python初学者指南:第一个Python程序安装步骤

    在本篇指南中,我们将通过以下方式来详细讲解第一个Python程序安装步骤: Python的安装和环境配置 在命令行中编写和运行第一个Python程序 使用IDE编写和运行第一个Py…

    编程 2025-04-29
  • FusionMaps应用指南

    FusionMaps是一款基于JavaScript和Flash的交互式地图可视化工具。它提供了一种简单易用的方式,将复杂的数据可视化为地图。本文将从基础的配置开始讲解,到如何定制和…

    编程 2025-04-29
  • Python起笔落笔全能开发指南

    Python起笔落笔是指在编写Python代码时的编写习惯。一个好的起笔落笔习惯可以提高代码的可读性、可维护性和可扩展性,本文将从多个方面进行详细阐述。 一、变量命名 变量命名是起…

    编程 2025-04-29
  • Python中文版下载官网的完整指南

    Python是一种广泛使用的编程语言,具有简洁、易读易写等特点。Python中文版下载官网是Python学习和使用过程中的重要资源,本文将从多个方面对Python中文版下载官网进行…

    编程 2025-04-29

发表回复

登录后才能评论