Numpy及list与array对比

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!

1、前言

Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。

NumPy数组是一个多维数组对象,称为NDArray( N-dimensional array )。数组的下标从0开始,同一个NumPy数组中所有元素的类型必须是相同的。

2、为什么要用numpy

Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。
Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也没有各种运算函数。因而不适合数值运算。
NumPy的出现弥补了这些不足。

import numpy as np
a=[[1,2,1],[2,3,5]]
b=[[0,0,0],[2,3,5]]
c=np.array(a)
d=np.array(b)

就是简单的把list列表转化为ndarray数组

3、关于list和ndarray的区别

'''
1、list的形状只能是np.shape,它本身不带有shape属性
   ndarray形状np.shape或者.shape都行
2、list打印出来后有','  但ndarray没有
'''
a = [[1,1,1],[2,2,2]]
print(a)  
# output: [[1, 1, 1], [2, 2, 2]]
print(type(a))
# output: <class 'list'>
# print(a.shape)          !!!!!!
# output: AttributeError: 'list' object has no attribute 'shape'
print(np.shape(a))
# output: (2,3)   说明是2维的list


c = np.array(a)
print(c)
# output: [[1 1 1]
#          [2 2 2]]
print(type(c))
# output: <class 'numpy.ndarray'>
print(c.shape)
# output: (2,3)   说明是2维的ndarray
print(np.shape(c))
# output: (2,3)   等价上方

python基础之Numpy库中array用法总结

—————————更新,2023/6/7,最近学了pytorch,用到了tensor,因此又做一下总结————————————

4、关于list、tensor和ndarray的区别

在DL的科研和工程中,对数据的操作是一个重要的环节,其中最常用的工具是Numpy和Pytorch。Numpy一个强大的数据操作的工具,但是它不能在GPU上运行,只有将Numpy中的ndarray转换成tensor, 才能在GPU上运行。所以我们在必要的时候,需要对ndarray和tensor进行操作,同时由于list是一种我们在数据读取中经常会用到的数据结构,所以对于list的操作也是经常用到的一种操作。下图就总结了它们之间互相转换的基本的操作。

在这里插入图片描述
参考:

《炼丹手册(一)总结array和Tensor的操作》


码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值