码迷,mamicode.com
首页 > 其他好文 > 详细

NumPy

时间:2018-12-01 22:06:21      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:影子   tac   rod   mat   过程   面向过程   spl   axis   获取   

NumPy

建议

  • 使用numpy时, 建议采用面向过程的思想, 因为numpy中对象有的, numpy模块都会提供函数获取到或者进行操作
  • 学会了MATLAB, 在NumPy中可以找到很多MATLAB的影子

数组操作

数组的拼接与分割

  • np.concatenate((arr1, arr2), axis=1) # axis=1表示列优先, axis=0表示行优先, 它的功能和np.hstack和np.vstack一样
  • np.split(arr, 2, axis=1) # axis表示列优先, axis=0表示行优先, 它的功能和np.hsplit和np.vsplit一样, 返回list, 包含ndarray
  • 记忆方法: 列优先则是在水平方向放去拉伸数组, 行优先则是在竖直方向上去拉伸数组

其他操作

  • np.reshape()
  • np.shape()
  • np.size()
  • np.diag()
  • np.eye()
  • np.zeros()
  • np.ones()

有用的

  • np.max()
  • np.min()
  • 以上返回的是指
  • np.argmax()
  • np.argmin()
  • 返回的是对应的值的下标
  • np.std()
  • np.mean()
  • np.var()
  • np.cumsum()
  • np.cumprod()
  • np.sum()

random模块

  • np.random.rand(): 均匀分布
  • np.random.randn(): 高斯分布
  • np.random.uniform(): 生成[0, 1]范围的均匀分布
  • np.random.normal(): 高斯分布

矩阵(是ndarray的子类)操作

  • 通过字符串的方式模仿MATLAB(但是还是MATLAB使用起来更加方便)
  • mat = np.mat(‘1 2 3; 4 5 6‘) <=> np.matrix(‘1 2 3; 4 5 6‘, copy=False)
  • mat = np.matrix(‘[1 2 3; 4 5 6]‘, copy=True) # 创建一个矩阵
  • mat = np.bmat(‘arr1; arr2‘) # 通过两个分块矩阵创建一个新的矩阵, bmat是block matrix

ufunc

  • 在numpy中所有的符号运行都是调用了ufunc
    • +, -, *, /, **
  • 当两个矩阵的shape一致时好理解, 但是当shape不一样的时候, ufunc会采用广播机制
    • 如:
      • arr1 = np.mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
      • arr2 = np.mat([1, 2, 3])
      • arr1 + arr2 ?
      • ufunc + 会将arr2的数据进行广播生成一个[[1, 2, 3], [1, 2, 3], [1, 2, 3]]再参与运算

保存读取数据

  • 保存数组(和MATLAB中的save一样)
    • 二进制保存
      • np.save(filename, arr)
      • np.savez(filename, arr1, arr2, arr3) # 保存多个
    • 文本保存(更加常用)
      • np.savetxt(filename, arr, fmt=‘%d‘, delimeter=‘,‘) # 保存为csv格式
  • 读取数据
    • 二进制
      • np.load()
    • 文本
      • np.loadtxt()

NumPy

标签:影子   tac   rod   mat   过程   面向过程   spl   axis   获取   

原文地址:https://www.cnblogs.com/megachen/p/10050683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!