numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

1. np.asarray —— numpy 风格的类型转换

从已有多维数组创建新的多维数组,数据类型可重新设置

>> B = np.asarray(A, dtype='int32')

2. np.array() vs np.asarray

源码之前,了无秘密。
两者的区别和联系,铜通过查看源码,一目了然:

def asarray(a, dtype=None, order=None):
    return array(a, dtype, copy=False, order=order)

两者主要的区别在于,array(默认)复制一份对象,asarray不会执行这一动作。

>>> a = np.array([1, 2])
>>> np.asarray(a) is a
True
>>> np.array(a) is a
False

3. ndarray.tolist()

ndarray.tolist()np.array()构成一对互操作

>>> X = np.random.randn(3, 3)
>>> X
array([[ 0.25272657, -1.81033933,  0.5215726 ],
       [ 1.24087521,  0.86335847,  1.79204052],
       [-0.65888093,  1.1561787 , -0.53913756]])
>>> Y = X.tolist()
>>> Y
[[0.25272657237043794, -1.8103393348620243, 0.5215726035022588],
 [1.240875214113897, 0.8633584724959652, 1.7920405210518087],
 [-0.6588809297676459, 1.1561787010379958, -0.5391375573892387]]

>>> np.array(Y)
array([[ 0.25272657, -1.81033933,  0.5215726 ],
       [ 1.24087521,  0.86335847,  1.79204052],
       [-0.65888093,  1.1561787 , -0.53913756]])
>>> X
array([[ 0.25272657, -1.81033933,  0.5215726 ],
       [ 1.24087521,  0.86335847,  1.79204052],
       [-0.65888093,  1.1561787 , -0.53913756]])

什么情况下需要将numpy ndarray转化为list呢?需要序列化(serialization)时,numpy ndarray是不可序列化的。

原文地址:https://www.cnblogs.com/mtcnn/p/9422236.html