【python】numpy库

文章目录

  • 简单介绍
  • 功能示例代码


简单介绍

NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。

  • NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。
  • NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。
  • 基于NumPy的算法要比纯Python快10到100倍(甚至更快),并且使用的内存更少。

功能示例代码

  1. ndarray:一种多维数组对象
    ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象):
    【python】numpy库_第1张图片2. 创建ndarray
    【python】numpy库_第2张图片
    【python】numpy库_第3张图片

  2. 数据类型astype()方法明确地将一个数组从一个dtype转换成另一个dtype
    【python】numpy库_第4张图片
    【调用astype总会创建一个新的数组(一个数据的备份),即使新的dtype与旧的dtype相同。】

  3. 运算
    大小相等的数组之间的任何算术运算都会将运算应用到元素级:
    【python】numpy库_第5张图片

  4. 基本的索引和切片

(1)一维数组
【python】numpy库_第6张图片

跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上:
【python】numpy库_第7张图片(2)高维数组
【python】numpy库_第8张图片
二维数组的索引方式:轴0作为行,轴1作为列
【python】numpy库_第9张图片
【python】numpy库_第10张图片
【python】numpy库_第11张图片(3)布尔型索引

【python】numpy库_第12张图片【python】numpy库_第13张图片常用:将data中的所有负值都设置为0
【python】numpy库_第14张图片还有其他的都可以利用
【python】numpy库_第15张图片【python】numpy库_第16张图片

  1. 数组转置和轴对换

转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)
【python】numpy库_第17张图片

  1. 利用np.dot计算矩阵内积:

【python】numpy库_第18张图片
通用函数

【python】numpy库_第19张图片
【python】numpy库_第20张图片
【python】numpy库_第21张图片

  1. 利用数组进行数据处理

numpy.where(condition, x, y)是三元表达式x if condition else y
【python】numpy库_第22张图片【python】numpy库_第23张图片【python】numpy库_第24张图片

【python】numpy库_第25张图片
用于布尔型数组的方法:
【python】numpy库_第26张图片

  1. 排序

【python】numpy库_第27张图片【python】numpy库_第28张图片

  1. 唯一化以及其它的集合逻辑
    NumPy提供了一些针对一维ndarray的基本集合运算。最常用的可能要数np.unique了,它用于找出数组中的唯一值并返回已排序的结果:
    【python】numpy库_第29张图片等价于:
sorted(set(names))

函数np.in1d用于测试一个数组中的值在另一个数组中的成员资格,返回一个布尔型数组:
【python】numpy库_第30张图片【python】numpy库_第31张图片

  1. 用于数组的文件输入输出
    np.savenp.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的:
arr = np.arange(10)
np.save('some_array', arr)
arr_save = np.load('some_array.npy')

通过np.savez可以将多个数组保存到一个未压缩文件中,将数组以关键字参数的形式传入即可:

np.savez('array_archive.npz', a=arr, b=arr2)
arch = np.load('array_archive.npz')
arr2_save = arch['b']
  1. 线性代数
    后面用到在看:
    【python】numpy库_第32张图片
  2. 伪随机数生成

【python】numpy库_第33张图片我们说这些都是伪随机数,是因为它们都是通过算法基于随机数生成器种子,在确定性的条件下生成的。你可以用NumPy的np.random.seed更改随机数生成种子:np.random.seed(1234)
【python】numpy库_第34张图片【python】numpy库_第35张图片


你可能感兴趣的:(pytorch,python,numpy,开发语言)