numpy.empty应用指南

numpy.empty应用指南随着数据科学的快速发展,numpy成为了Python中最重要的科学计算包之一。numpy提供了诸多强大的功能,例如超快速的数学运算和数组处理。其中,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://daima100.com/21351.html

(0)
上一篇 2024-04-16
下一篇 2024-04-17

相关推荐

  • 优雅地使用Python条件嵌套语句

    优雅地使用Python条件嵌套语句Python是一种动态解释型的高级编程语言,它的语法简洁易懂,代码简洁易读,在很多场景下都可以替代复杂的编程语言。Python的语言特性之一是条件嵌套语句,它可以根据不同的判断条件执行不同的代码块,使得程序执行更加灵活。本文将从多个方面来详细地讲解如何优雅地使用Python条件嵌套语句,帮助读者更好地理解条件嵌套语句的使用方法。

    2024-03-24
    85
  • Python汉化教程

    Python汉化教程Python是一种面向对象、解释型计算机程序设计语言。其设计目的是为了让代码具有高度的可读性和简洁的语法,在各个领域都有广泛的应用。Python汉化教程旨在帮助中文用户更好地学习和使用Python语言,在此基础上,更好地完成日常开发任务。

    2024-08-04
    30
  • 用Python创建并管理线程的完整指南

    用Python创建并管理线程的完整指南现代编程需要对多任务处理有一个更好的理解,因为处理器的核心数已经增加,多线程编程已经成为一种常见而重要的技能。Python提供了非常优秀的线程支持,使开发者可以轻松地创建并管理线程。

    2024-08-03
    30
  • Redis系列(六):设置/移除键的过期时间[亲测有效]

    Redis系列(六):设置/移除键的过期时间[亲测有效]设置/移除键的过期时间。

    2023-02-25
    146
  • 电脑老师CPU爆满_cpu耗尽故障

    电脑老师CPU爆满_cpu耗尽故障问题描述 公司项目测试环境调用某些接口的时候,服务器立即崩溃,并一定时间内无法提供服务。 问题排查 服务器配置不够 第一反应是服务器需要升配啦,花钱解决一切!毕竟测试服务器配置确实不高,2CPU +

    2023-01-27
    183
  • oracle order by效率慢_limit order book

    oracle order by效率慢_limit order book大数据量在MySQL中查询分页排序,数据量就会很大 我们可以把limit与order by拆分为两个步骤 先根据条件 把limit、ordey by相关的数据的索引查出来,然后再根据索引查询具体的字…

    2023-04-07
    173
  • Python函数:计算两个数的和

    Python函数:计算两个数的和函数是Python中非常重要的概念,通俗来说,函数就是一段可复用的代码块,它能接受输入参数,经过处理后返回输出结果。在Python中,要创建一个函数,需要使用关键字def,函数名称后面紧跟着一对小括号,括号中是函数的参数。函数的执行过程是先将参数传递给函数,然后执行函数内部的代码,最后返回结果。

    2023-12-13
    104
  • java.lang.IllegalAccessException;java.lang.Class.newInstance

    java.lang.IllegalAccessException;java.lang.Class.newInstance 问题: Exception in thread

    2023-02-21
    148

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注