Numpy:array、asarray、asanyarray

本文详细介绍了numpy库中array和asarray函数的主要区别。array函数默认创建新数组并进行复制,而asarray则尝试避免复制数据。此外,文章还对比了asarray和asanyarray的功能,并通过实例说明了它们在不同场景下的使用方式。
摘要由CSDN通过智能技术生成
  • array和asarray的区别
  • 看asarray的定义:
def asarray(a, dtype=None, order=None):
    return array(a, dtype, copy=False, order=order)
  • array相似, 除了默认设置copy=False. 而array默认设置copy=True
  • 所以主要的不同在于array对目标做一个拷贝,而asarray不会。

例子:

>> A = numpy.matrix(np.ones((3,3)))
>>> A
matrix([[ 1.,  1.,  1.],
        [ 1.,  1.,  1.],
        [ 1.,  1.,  1.]])

array修改的是A的拷贝:

>>> numpy.array(A)[2]=2
>>> A
matrix([[ 1.,  1.,  1.],
        [ 1.,  1.,  1.],
        [ 1.,  1.,  1.]])

asarray修改的A本身:

>>> numpy.asarray(A)[2]=2
>>> A
matrix([[ 1.,  1.,  1.],
        [ 1.,  1.,  1.],
        [ 2.,  2.,  2.]])

np.asanyarray 会返回 ndarray 或者ndarray的子类,而np.asarray 只返回 ndarray.
例子:

issubclass(np.matrix, np.ndarray)
True
>>> a = np.matrix([[1, 2]])
>>> np.asarray(a) is a#返回的不是子类。
False
>>> np.asanyarray(a) is a#np.asanyarray(a)返回是a的子类
True

参考:
https://www.quora.com/What-is-the-difference-among-np-array-np-asarray-and-np-asanyarray-when-numpy-creates-array-from-an-array-like-object
https://stackoverflow.com/questions/14415741/numpy-array-vs-asarray
https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.asanyarray.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值