两者都能将对象转化为ndarray
代码
import numpy as np
# list-->ndarray
list = [1, 2, 3, 4, 5]
array1 = np.array(list)
array2 = np.asarray(list)
print(list, type(list))
print(array1, type(array1))
print(array2, type(array2))
输出:
[1, 2, 3, 4, 5] <class 'list'>
[1 2 3 4 5] <class 'numpy.ndarray'>
[1 2 3 4 5] <class 'numpy.ndarray'>
区别
np.array()默认情况下都是copy对象,而np.asarray()则不是。
若对象的属性不是ndarray,则两者都会copy对象。像上面的list–>adarray。
若对象的属性是ndarray,则np.array()copy对象,而np.asarray()不会。
代码
import numpy as np
array = np.array([[1, 2], [3, 4]])
array1 = np.array(array)
array2 = np.asarray(array) # 若改变了dtype,则会copy对象
array[0][0] = 5
print(array)
print(array1)
print(array2)
输出:
[[5 2]
[3 4]]
[[1 2]
[3 4]]
[[5 2]
[3 4]]
改变array中的值,array1不会受影响,而array2随之变化,说明np.asarray()并没有copy对象。