我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

前面的ndarraylist类型互转的文章里面,苏南大叔说:list转成ndarray的方式有两种,一种是np.array([]),另外一种是np.asarray([])。苏南大叔表示:np.asarray()的存在似乎是画蛇添足。那么,本文中,苏南大叔再次对比一下np.array()np.asarray(),看看这个np.asarray()到底有没有必要存在。

苏南大叔:python代码,numpy中bug级别的无用函数asarray() - numpy-asarray
python代码,numpy中bug级别的无用函数asarray()(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验。本文测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

相同点:转换listndarray

这个最基本的功用,在上一篇文章里面已经说过了。

np.array([])np.asarray()都可以用于list类型转换为ndarray类型的。测试代码如下:

import numpy as np

list_1 = list("苏南大叔")
ndarray_1 = np.array(list_1)
ndarray_2 = np.asarray(list_1)

print(np.array_equal(ndarray_1,ndarray_2))   # True

不同点:转换ndarrayndarray

这个功用就很邪门了,本来就是ndarray类型了,为啥要再转换一次?主要是因为:用作这个功能的时候,np.array()np.asarray()有着不同的表现。

  • np.array()得到的是个.copy()的结果。
  • np.asarray()得到的是个=的结果,是个引用值。那为啥不直接用等号获得引用呢?

测试代码:

import numpy as np

ndarray_1 = np.array(list("苏南大叔"))
ndarray_2 = np.array(ndarray_1)
ndarray_3 = np.asarray(ndarray_1)

print(np.array_equal(ndarray_2, ndarray_3))  # True
print(ndarray_2 is ndarray_1)  # False
print(ndarray_3 is ndarray_1)  # True

ndarray_1[3] = "哥"
print(ndarray_2)  # ['苏' '南' '大' '叔']
print(ndarray_3)  # ['苏' '南' '大' '哥']

结束语

苏南大叔的结论就是:np.asarray()就是个没用的函数!读者如果认为它有存在的必要,可以留言给我。更多python经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python