本文主要是介绍NumPy中np.array和np.asarray的异同点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
相同点:两者都可以根据传入的结构数据(如列表)创建一个ndarray数组对象。
-
不同点:当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,即创建一个新的对象;但asarray不会,与原数据共享同一内存。
-
np.array() 函数原型:
def array(a, dtype=None, order=None):return array(a, dtype, copy=True, order=order)
说明:Create an array. array() 方法创建一个新的对象。
-
np.asarray() 函数原型:
def asarray(a, dtype=None, order=None):return array(a, dtype, copy=False, order=order)
说明:Convert the input to an array。asarray() 方法将原数据转换为新的ndarray 对象。
Example
# 原数据为列表类型
score = [70, 75, 78]
arr1 = np.array(score)
arr2 = np.asarray(score)
score[1] = 100 # 改变原数据
print("score: ", score)
print("arr1: ", arr1)
print("arr2: ", arr2)
输出结果:
score: [70, 100, 78]
arr1: [70 75 78]
arr2: [70 75 78]
原数据为列表类型时,改变原数据,array 和asarray 方法返回的对象都没有发生变化。
# 原数据为ndarray 数组
score = np.array([70, 75, 78])
arr1 = np.array(score)
arr2 = np.asarray(score)
score[1] = 100 # 改变原数据
print("score: ", score)
print("arr1: ", arr1)
print("arr2: ", arr2)
输出结果:
score: [ 70 100 78]
arr1: [70 75 78]
arr2: [ 70 100 78]
原数据为ndarray 数组时,改变原数据,array 方法返回的对象没有变化,而asarray 方法返回的对象跟着改变。
这篇关于NumPy中np.array和np.asarray的异同点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!