asarray
和array
都是用于创建数组的函数,但它们之间存在一些重要的区别。
- 来源和用途:
array
是Python的标准库中的一个函数,用于创建固定长度的数组,并且只支持一种数据类型,需要在创建数组时指定。而asarray
是NumPy库中的一个函数,用于将一个给定的对象转换为一个新的NumPy数组。 - 数组类型:
array
创建的是Python原生的数组对象,而asarray
可以创建任何类型的数组,包括NumPy的多维数组、矩阵等。 - 性能和灵活性:由于
asarray
是基于NumPy库的,因此它可以充分利用NumPy提供的优化和高效的数组操作。相比之下,array
的性能可能较差。此外,asarray
还提供了更多的选项来控制数组的形状、数据类型等。 - 内存管理:
asarray
返回一个新的NumPy数组,与原始数组共享相同的内存。这意味着,如果更改新数组的值,原始数组的值也会随之改变。而array
创建一个新的固定长度的数组,与原始数组不共享内存。
import numpy as np
# 创建一个NumPy数组
arr = np.array([1, 2, 3, 4, 5])
print("NumPy array:", arr)
# 使用asarray创建一个新的NumPy数组
new_arr = np.asarray(arr)
print("New NumPy array:", new_arr)
# 更改新数组的值,原始数组的值也会改变
new_arr[1] = 10
print("Modified NumPy array:", arr)
print(id(arr),id(new_arr))
总结:
- array是python库中的一个函数,只是简单创建数组。asarray是numpy中的一个函数,功能更多,可以改变数组形状参数等。
asarry
返回一个新的NumPy数组,与原始数组共享相同的内存,所以改变asarray数组,原数组也会变化