[关闭]
@nemos 2017-05-06T02:37:53.000000Z 字数 1229 阅读 983

numpy

ml


数组

索引

  1. import numpy as np
  2. arr = np.array([[[1], [2]], [[3], [4]]], dtype) #创建数组,可指定数据类型
  3. arr.ndim #arr的维度,#3
  4. arr.shape #从外向内分解各维长度,#(2,2,1)
  5. len(arr) #第一维的大小
  6. newarr = arr[:].copy() #索引返回的数组是与原数组共享内存
  1. arr[start:end:step] #多维用逗号分割

  1. mask = arr % 3 == 0 #返回bool类型的的数组
  2. newarr = arr[mask] #对arr用mask筛选
  3. a[a % 3 == 0] = -1 #筛选赋值

创建

  1. np.arange(n)
  2. np.arange(start, end, step)
  3. np.linspace(start, end, num) #[start, end]割num个数
  4. np.ones((m, n)) #全为1的矩阵
  5. np.zeros((m, n))
  6. np.eye(n) #单位方阵
  7. np.diag(np.arr([1, 2, 3])) #填充对角线
  8. arr.dtype #数据类型

操作

元素

  1. arr + 1 #可对数组直接进行加减乘除操作用运算符的都是对元素全体的运算
  2. arr1 == arr2 #返回一个bool类型的array
  3. np.array_equal(a, b) #数组判等
  4. np.sin(a)
  5. np.log(a)
  6. np.exp(a)
  7. a = np.triu(np.ones((3, 3)), 1) #换位操作
  8. array([[ 0., 1., 1.],
  9. [ 0., 0., 1.],
  10. [ 0., 0., 0.]])

迭代

  1. arr.sum()
  2. arr = np.array([[1, 1], [2, 2]])
  3. arr.sum(axis=0) #对每列分别进行求和

  1. arr.min()
  2. arr.max()
  3. np.all([True, True, False]) => false
  4. np.any()
  5. arr.mean(axis=)
  6. np.median(arr, axis=)
  7. arr.transpose(axis0, ...)
  8. arr.resize((axis1, ...)) #元素不足则用0补齐,arr不能被引用

Broadcasting

形状

  1. arr.ravel() #连接成一行
  2. arr.reshape((m, n)) #重塑,可能返回view或copy
  3. arr[:, np.newaxis] #维度增加
  4. [1, 2, 3] => [[1],[2],[3]]
  5. arr[np.newaxis, :]
  6. [[1, 2, 3]]

数据类型

  1. arr.astype() #强制类型转化
  2. np.around(arr) #四舍五入但数据类型仍为浮点

多项式

  1. p=np.polynomial([-1, 2, 3])
  2. p(x') #x=x'时多项式的值
  3. p.roots() #多形式为0时的根
  4. p.degree() #最高次

文件

  1. data = np.loadtxt('xxx.txt')
  2. np.savetxt('xxx.txt', data)
  3. np.genfromtxt() #读取复杂格式的文件

参考

scipy notes


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注