美文网首页
numpy常用函数总结(不定时更新)

numpy常用函数总结(不定时更新)

作者: tuimer | 来源:发表于2019-11-11 16:11 被阅读0次

学习python一段时间,numpy,pandas,matplotlib等这些包同房在学,经常将他们的函数混淆,所以将之前学过的,和用到过的归类整理出来,整理知识

一、多维数组对象

1. 1numpy的多维数组ndarray

1.1.1 创建数组

一维数组:arr1 = np.array([1,2,3,4])
二维数组:arr2 = np.array([[1,2,3,4],[5,6,7,8]])
查看数组的维数:arr2.ndim
查看数组形状:arr2.shape
查看数组元素类型:arr2.dtype

1.1.2 其他创建数组方法:

np.zeros(10)
np.zeros((3,6))
np.empty((2,3,4)) #返回的是一些未初始化的垃圾值

1.1.3 函数

  • array()
  • asarray()
  • arange()
  • ones()/ones_like()
  • zeros()/zeros_like()
  • empty()/empty_like()
  • eye()/identity() # 创建一个正方的N*N单位矩阵(对角线为1,其余为0)

1.2. ndarry的数据类型

1.2.1 创建时指定dtype

arr1 = np.array([1, 2, 3,4], dtype = np.float)

1.2.2 使用astype()方法显式的转换dtype

float_arr = arr.astype(np.float64)
另一种方法:
arr1的数据类型为int, arr2的数据类型为float
将arr2的数据类型转换为和arr1一样:
arr2.astype(arr1.dtype)

1.3. 数组和标量之间的运算

1.3.1标量与数组的运算会传播到整个数组

  • 大小相同的数组间的运算会应用到元素级
    arr = [[1,2,3,4],[5,6,7,8])
    arr * arr #对应位置数据相乘
    arr - arr
    1/arr
    arr**0.5
  • 大小不同的数组间运算叫广播

1.4 索引和切片

1.4.1 基本索引和切片

  1. 一维数组

arr = np.arange(10)

  • arr[5]
  • arr[5:8]
  • arr[5:8] = 12 #切片赋值
    !切片得到的是视图,更改会体现在源数据上
    eg:
    arr_slice = arr[5:8]
    arr_slice = 64
    对arr_slice赋值,也会体现在arr[5:8]上
    !可以进行显式的复制操作
    eg:arr_slice = arr[5:8].copy()
  1. 二维数组

arr2d = np.array([[1,2,3], [4,5,6],[7,8,9]])

  • arr2d[2]
  • arr2d[0][2]
  1. 三维数组

1.4.2 切片索引

  • arr2d[:2] #沿第0轴切片
  • arr2d[:2, 1:]

1.4.3 布尔索引

data 为一个多维数组
data[[布尔数组]]

  • 布尔数组用于组索引
  • 返回布尔值为1的元素
  • 布尔数组的长度与被索引轴长度一致

1.4.3 花式索引

  • 利用整数数组进行索引

arr[[1,3,5]]

  • 选择arr数组的1,3,5行(从0开始)

arr[[-3, -5, -7]]

  • 负数表示从末尾开始选行,倒数3,5,7行(从1开始)

arr[[1,3,5],[2,4,6]]

  • 选择的是元素(1,2),(3,4),(5,6),得到的是一个一维数组,而不是一个矩阵

arr[[1,3,5]][:, [2,4,6]]

  • 得到1,3,5行的2,4,6列数据,一个3X3矩阵
  • 或者使用函数:np.ix_()
    arr[np.ix_([1,3,5],[2,4,6])]

1.5 数组的转置和轴对换

1.5.1 转置 (返回的是源数据视图)

二维数组:arr.T#轴对换

高维数组:arr.transpose((1,0,2))

二、通用函数

2.1 一元函数

np.abs()
np.sqrt() # 平方根
np.square() #平方
......

2.2 二元函数

np.add() # 将数组对应元素相加
np.subtract() # 从第一个数组中减去第二个数组中的元素
......

三、利用数组进行数据处理

3.1 将条件逻辑表述为数据运算

np.where( cond, x, y)
等价于:x if condition else y
条件为1时返回x, 条件为0时返回y

3.2 数学和统计方法

  • 两种方法:函数调用:np.mean(arr) /对象方法:arr.mean()
  • 统计函数:np.sum()、np.std()、np.var().....
  • 最小(大)元素索引:np.argmin()/np.argmax()
  • 累计和/积:np.cumsum() / cumprod()

3.3 用于布尔型数组的方法

布尔值会被转换位1,0 ,所以用sum()来对布尔型数组计数

  • bools.any() 测试数组中是否存在一个或多个True
  • bools.all()数组中的所有值是否都为True

3.4 排序

多维数组可以在任何一个轴上进行排序,只需将轴编号传给sort()

  • arr.sort() 就地排序,会改变数组本身
  • np.sort() 顶级方法,返回数组的副本

3.5 集合逻辑

  • np.unique(x) 返回x中的唯一元素,并有序返回结果
  • np.intersect1d(x,y)计算x,y中的公共元素,并返回有序结果
  • union1d(x,y) 计算x,y中的并集,并返回有序结果
    ......

四、用于数组的文件输入输出

np.save('文件名', arr) #将arr数组保存到磁盘上.npy文件
np.load('文件名.npy')
np.savez('file.npz', arr1, arr2)# 多个数组压缩保存到一个压缩文件中

五 线性代数

np.linalg中有一组标准的矩阵分解运算以及求逆、行列式等

  • 矩阵乘法:
    x, y 为两个二矩阵
    x.dot(y) 相当于 np.dot(x, y)
    ......

六、随机数生成

np.random模块对python内置的random进行补充

  • seed 随机数生成器种子
  • rand 产生均匀分布的样本值
  • randint 从给定范围随机选取整数
  • randn 产生标准正态分布的样本值
  • normal 产生正态分布样本值
  • binomial 产生二项分布样本值

相关文章

网友评论

      本文标题:numpy常用函数总结(不定时更新)

      本文链接:https://www.haomeiwen.com/subject/wmctictx.html