numpy中array和asarray的区别

一、简述

numpy.asarray(a,dtype=None,order=None)

功能描述:将输入数据(列表的列表,元组的元组,元组的列表等)转换为矩阵形式
a:数组形式的输入数据,包括list,元组的list,元组,元组的元组,元组的list和ndarrays
dtype:
数据类型由输入数据推导
 

二、实例
2.1将列表转化为数组

    from numpy import asarray
    my_list=[1,2,3,4]
    asarray(my_list)

输出:array([1, 2, 3, 4])
注:asarray对已经是数组的数据不做任何处理也不会被拷贝,可以如下验证:

    from numpy import array
    array([1,2,3,4])
    asarray(a) is a

输出:True
注:当dtype设置时,当且仅当dtpye不同时数据被会拷贝,比如:

    a=array([1,2,3,4],dtype=numpy.float32)
    asarray(a,dtype=numpy.float32) is a    #输出 True
    asarray(a,dtype=numpy.float64) is a    #输出 False

2.2将列表的列表转化为矩阵

    asarray([[1., 2], [3, 4], [5, 6]])
    asarray([[1., 2], [3, 4], [5, 6]]).shape #输出 (3,2)
    asarray([[1., 2], [3, 4], [5, 6]])[2,0]  #取第二行0列的值为:5


2.3将元组的列表转化为矩阵

asarray([(1,2,3),(4,5,6),(7,8,9)])
---------------------------------------------------------区别

array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,属于深拷贝。但asarray不会。

举例说明:

    import numpy as np
     
    #example 1:
    data1=[[1,1,1],[1,1,1],[1,1,1]]
    arr2=np.array(data1)
    arr3=np.asarray(data1)
    data1[1][1]=2
    print 'data1:\n',data1
    print 'arr2:\n',arr2
    print 'arr3:\n',arr3


输出:

    data1:
    [[1, 1, 1], [1, 2, 1], [1, 1, 1]]
    arr2:
    [[1 1 1]
     [1 1 1]
     [1 1 1]]
    arr3:
    [[1 1 1]
     [1 1 1]
     [1 1 1]]
可见array和asarray没有区别,都对元数据进行了复制。

 

    import numpy as np
     
    #example 2:
    arr1=np.ones((3,3))
    arr2=np.array(arr1)
    arr3=np.asarray(arr1)
    arr1[1]=2
    print 'arr1:\n',arr1
    print 'arr2:\n',arr2
    print 'arr3:\n',arr3


输出:

    arr1:
    [[ 1.  1.  1.]
     [ 2.  2.  2.]
     [ 1.  1.  1.]]
    arr2:
    [[ 1.  1.  1.]
     [ 1.  1.  1.]
     [ 1.  1.  1.]]
    arr3:
    [[ 1.  1.  1.]
     [ 2.  2.  2.]
     [ 1.  1.  1.]]


此时两者才表现出区别arr2没有改变,arr3和arr1同时被改变了,np.asarray属于浅拷贝。

 

补一下:

1.ndarray.max([int axis])

函数功能:求ndarray中指定维度的最大值,默认求所有值的最大值。

axis=0:求各column的最大值

axis=1:求各row的最大值

---------------------
作者:Gobsd
原文:https://blog.csdn.net/gobsd/article/details/56485177

作者:云梦泽1989
原文:https://blog.csdn.net/u012333003/article/details/34502651

  • 14
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值