np.array()和np.asarray()的联系与区别

联系

np.array()和nb.asarray()都可以将结构数据转化为ndarray对象。

区别

np.asarray的定义:

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

np.array的定义:

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

从定义中可以看出两者的主要区别在于 np.array(默认情况下)将会copy该对象,而 np.asarray除非必要,否则不会copy该对象。

代码实例:

date_1 = [[1, 2, 3, 4],
          [5, 6, 7, 8]]
print("date_1:\n", date_1)
date_array = np.array(date_1)
date_asarray = np.asarray(date_1)
date_1[1][1] = 9  # 对原列表进行修改
print("type(date_array): ", type(date_array))
print("date_array:\n", date_array)
print("type(date_asarray): ", type(date_asarray))
print("date_asarray:\n", date_asarray)
'''
date_1:
 [[1, 2, 3, 4], [5, 6, 7, 8]]
type(date_array):  <class 'numpy.ndarray'>
date_array:
 [[1 2 3 4]
 [5 6 7 8]]
type(date_asarray):  <class 'numpy.ndarray'>
date_asarray:
 [[1 2 3 4]
 [5 6 7 8]]
 '''
 # 从结果中可以看出两者此时没有区别,都对元数据进行了复制
date_2 = np.arange(12).reshape(3, 4)
print("date_2:\n", date_2)
date_array_2 = np.array(date_2)
date_asarray_2 = np.asarray(date_2)
date_2[0][0] = 21
print("date_array:\n", date_array_2)
print("date_asarray:\n", date_asarray_2)
'''
date_2:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
date_array:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
date_asarray:
 [[21  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 '''
 # 从结果可以看出当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,
 # 但asarray不会。


参考文献

np.array()和np.asarray()的区别

numpy: np.asarray 函数

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值