numpy np.asarray介绍
numpy.asarray
是 NumPy 中用于将输入数据转化为数组(ndarray
)的函数。它的主要作用是将输入数据类型尽量保留为 ndarray
,而不创建不必要的新数组。如果输入已经是 ndarray
类型,那么它不会创建副本,而是直接返回原始数组。
基本用法
numpy.asarray(a, dtype=None, order=None)
参数说明:
a
: 需要转换为数组的输入数据,可以是列表、元组、数组等任意序列或类数组对象。dtype
(可选): 指定转换后的数据类型。如果不指定,则会根据输入数据类型自动推断。order
(可选): 指定内存布局。有以下选项:'C'
:按行优先存储(C风格),即行主序。'F'
:按列优先存储(Fortran风格),即列主序。
示例
import numpy as np
# 将列表转化为数组
arr = np.asarray([1, 2, 3])
print(arr)
如果输入已经是 ndarray
,它不会创建新的数组:
a = np.array([1, 2, 3])
b = np.asarray(a)
print(a is b) # True
np.asarray
和 np.array
的区别
-
是否复制数据:
np.array
:总是会创建一个新的数组,除非显式地通过copy=False
指定不进行复制(但这种情况下copy=False
只在部分情况有效)。np.asarray
:只会在输入不是ndarray
的情况下创建一个新数组,如果输入已经是ndarray
,则返回原始数组,不进行数据复制。
-
对输入的修改:
np.array
:无论输入是什么类型,都会返回一个新数组,可以指定额外参数(如dtype
和order
)强制转换。np.asarray
:尽可能避免创建副本,保留原有数据。如果输入的类型与目标类型匹配,它不会复制数据。
示例代码
import numpy as np
# 使用 np.array 创建数组,会复制数据
a = np.array([1, 2, 3])
b = np.array(a)
print(a is b) # False, 数据被复制
# 使用 np.asarray,不会复制数据
c = np.asarray(a)
print(a is c) # True, 没有创建副本
# 强制改变数据类型,np.asarray 也会创建副本
d = np.asarray(a, dtype=np.float64)
print(a is d) # False, 因为数据类型不同,进行了复制
适用场景:
np.asarray
更适合在处理输入时不希望总是复制数据的场景,特别是在性能要求较高的地方。np.array
通常用于创建新的数组,尤其是在需要改变数据类型或创建副本时使用。
总结
np.asarray
主要用于将输入数据快速转化为数组,尽可能避免复制数据,适用于已经是数组的数据类型。np.array
总是会创建一个新数组,适合需要对输入数据做更多控制或改变时使用。
原文地址:https://blog.csdn.net/qq_27390023/article/details/142741285
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!