阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
文章目录
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) 等价上方
—————————更新,2023/6/7,最近学了pytorch,用到了tensor,因此又做一下总结————————————
4、关于list、tensor和ndarray的区别
在DL的科研和工程中,对数据的操作是一个重要的环节,其中最常用的工具是Numpy和Pytorch。Numpy一个强大的数据操作的工具,但是它不能在GPU上运行,只有将Numpy中的ndarray转换成tensor, 才能在GPU上运行。所以我们在必要的时候,需要对ndarray和tensor进行操作,同时由于list是一种我们在数据读取中经常会用到的数据结构,所以对于list的操作也是经常用到的一种操作。下图就总结了它们之间互相转换的基本的操作。
参考:
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!