大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说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