自学内容网 自学内容网

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 的区别

  1. 是否复制数据

    • np.array:总是会创建一个新的数组,除非显式地通过 copy=False 指定不进行复制(但这种情况下 copy=False 只在部分情况有效)。
    • np.asarray:只会在输入不是 ndarray 的情况下创建一个新数组,如果输入已经是 ndarray,则返回原始数组,不进行数据复制。
  2. 对输入的修改

    • 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)!