numpy 📒最后一卷

点这里排版更好

作为ML任务的一个 很重要 的任务, 数据处理是十分重要的一环
而numpy向量运算方面 做了 很多优化
so 我们需要熟练掌握numpy的使用
需要提的是 numpy开数组 内存开销很大
numpy存一个int32需要96byte 96byte 96byte
int32只要4byte 这24倍
我在处理一个1G的数据的时候,用list开只要1G左右 用np内存飙到110G+ 直接打停了
所以在大数据量的处理中 numpy还是值得商榷的一个工具
但熟练掌握np是必不可少的 故参考nump-100做了一个整理

This is a note for numpy-100

1. np.add.reduce() > np.sum()
     * np.sum(Z) # 调用np.add.reduce()实现
     * np.add.reduce(Z) # 在reshape的时候会产生一个数组
     * np.logical_and.reduce(arr3[:, :-1]<arr3[:,1:], axis=1) # 逻辑与
     * np.add.accumulate(Z) # reduce by processing
     = np.sumsum(Z)
     * np.add.reduceat(Z, np.array([1,4])) # print sum(1-3) sum(4-end)
     * np.add.outer(Z, Y) # Z+Y 以Z为基础
     * np.frompyfunc(add_elements, 2,1) # 构造自定义
2. Z[::-1]
     * Z[1::2,::2]
3. np.nonzero([1,2,0,0,4,0])
4. 矩阵扩展
     * np.pad(Z, pad_width=1, mode='constant', constant_values=0)
     * np.pad(Z, pad_width=2, mode='edge')
     * np.pad(Z, pad_width=2, mode='linear_ramp')
     * np.pad(Z, pad_width=2, mode='maximum')
     * np.pad(Z, pad_width=2, mode='middle')
     * np.pad(Z, pad_width=2, mode='reflect')
     * np.pad(Z, pad_width=2, mode='symmetric')
     * np.pad(Z, pad_width=2, mode='wrap')
5. np.nan np.inf
6. np.diag(1+np.arange(4),k=-1)
   * np.diag(np.random.random((4,4)))
7. np.unravel_index(99,(6,7,8)) # find index in shape(6,7,8)
8. 重复
   * np.tile(np.array([[0,1],[1,0]]), (4,4))
   * Z.repeat(3,axis=1)
9. (Z - np.mean (Z)) / (np.std (Z))
    * np.random.uniform(-10,+10,10)
10. np.ubyte
11. np.array(0) // np.array(0)
     * np.array(0) / np.array(0)
12. 取整
     * np.copysign(np.ceil(np.abs(Z)), Z)
     * np.floor() = Z - Z%1
     * np.ceil()
     * np.trunc()
     * Z.astype(int)
13. def generate():
     for x in range(10):
         yield x
Z = np.fromiter(generate(),dtype=float,count=-1)

14. np.linspace(0,1,11,endpoint=False)
15. equal
     * np.array_equal(A, B)
     * np.allclose(1e-8,1e-9)
     * np.allclose(A,B) # tolerance
16. Z.flags.writeable = False
17. Z.argmax()
18. Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,5),
                                 np.linspace(0,1,5))
     * Z['X'] # 横向uniform Z['y']纵向uniform
19. Array的合并
     * np.concatenate([arr1,arr2], axis=0)
     = np.vstack((arr1,arr2))
     = np.row_stack((arr1,arr2))
     = np.r_[arr1, arr2]
     * np.concatenate([arr1,arr2], axis=1)
     = np.hstack((arr1,arr2))
     = np.column_stack((arr1,arr2))
     = np.c_[arr1, arr2]
     * np.concatenate([arr1,arr2], axis=2) # 如果没有第三维度的时候报错
     = np.dstack((arr1,arr2))              # No Error
20. Array 拆分
     * np.split(arr3, [1,3],axis=0)
     = np.vsplit(arr3, [1,3])
     * np.split(arr3, [1,3],axis=1)
     = np.hsplit(arr3, [1,3])
     * np.split(arr3, [1,3],axis=2)
     = np.dsplit(arr3, [1,3])
21. np.take(arr,indexs)
22. arr_3d = arr[:, np.newaxis, :] # 拓展维数
23. sort
         * np.sort(Z)
     * np.argsort(Z)
     * np.lexsort(Z)
     * np.argsort(Z, kind='mergesort',order='index')
     * np.argsort(Z, kind='quicksort')
     * np.argsort(Z, kind='heapsort')
     * np.searchsort(Z, v)
     * np.partition(list,3) # 3 is the index of wait partition number
     * sort(Z)
24. np.linalg.det(C) # 行列式值
25. np.set_printoptions(threshold=np.nan) # Array不省略
26. np.atleast_1d(arr) np.atleast_2d(arr) np.atleast_3d(arr) # 拓宽n维
27. np.genfromtxt(s, delimiter=",", dtype=np.int) # get data from file
28. np.ndenumerate()
29. (~Z.any(axis=0)).any() # 检测是否有null
30. 降维
      * Z.flatten()        # 降维 Z.flatten('F')列
      * Z.flat[index]      # 返回降维后第index个元素
      * np.ravel(Z)        # np.ravel(Z, order='F')
      * np.resize(Z,(2,4)) # 重组
      * np.reshape((2,4))  # 重组
31. 按索引叠加
      * np.bincount(I, minlength=len(Z)) # 按值计数
      * np.add.at(Z,I,1)
      * np.bincount(I, X) # 以I为基 统计count
32.diagonal of dot
      * np.diag(A @ B)              # slow
      = np.sum(A * B.T, axis=1)     # fast
      = np.einsum("ij,ji->i", A, B) # fastest
      * np.einsum('i->', a)         # sum
      * np.einsum('i, i->i', a, b)  # 对应乘 Hadamard
      * np.einsum('i, i', a, b)     # 内积 np.inner(a, b)
      * np.einsum('i, j->ij', a, b) # 外积 np.outer(a, b)
      * np.einsum('ji', A)          # 转置
      * np.einsum('ii->i', A)       # np.diag(A)
      * np.einsum('ii', A)          # np.trace(A)
      * np.einsum('ij->', A)        # np.sum(A)
      * np.einsum('ij->j', A)       # np.sum(A, axis=0)
      * np.einsum('ij->i', A)       # np.sum(A, axis=1)
      * np.einsum('ij, ij->ij', A, B)# A*B
      * np.einsum('ij, ji->ij', A, B)# A*B.T
      * np.einsum('ij, jk', A, B)   # np.dot(A, B)
      * np.einsum('ij, ij', A, B)   # 内积
33. A[[0,1]] = A[[1,0]]             # 交换两行
34. Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz))
    Z0[::nz+1] = Z                  # 插入0
35. np.repeat(np.arange(len(C)), C) # 与np.bincount(A)互逆
36. np.roll(faces.repeat(2,axis=1),-1,axis=1) # 滚动-1
37. np.logical_not(Z, out=Z)        # Boolean 取反
    np.negative(Z, out=Z)           # 符号反
38. poiner to line distance
def distance(P0, P1, p):
    T = P1 - P0
    L = (T**2).sum(axis=1)
    U = -((P0[:,0]-p[...,0])*T[:,0] + (P0[:,1]-p[...,1])*T[:,1]) / L
    U = U.reshape(len(U),1)
    D = P0 + U*T - p
    return np.sqrt((D**2).sum(axis=1))
39.秩
U, S, V = np.linalg.svd(Z)
rank = np.sum(S > 1e-10)
40. Z.strides # 跨度 在某个维度上获得下一个值所需要跨过的字节
41. n largest
      * Z[np.argsort(Z)[-n:]]        # slow
      * Z[np.argpartition(-Z,n)[:n]] # fast
42. 笛卡尔积
def cartesian(arrays):
    arrays = [np.asarray(a) for a in arrays]
    shape = (len(x) for x in arrays)

    ix = np.indices(shape, dtype=int)
    ix = ix.reshape(len(arrays), -1).T

    for n, arr in enumerate(arrays):
        ix[:, n] = arrays[n][ix[:, n]]

    return ix
43. np.unpackbits(Z, axis=1)          # 转成2进制
44. np.interp(a, A, B)                # 插值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,289评论 0 10
  • The Inner Game of Tennis W Timothy Gallwey Jonathan Cape ...
    网事_79a3阅读 11,689评论 2 19
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,446评论 0 13
  • 来源HLS流媒体-整体认知(1) 前言: HLS是HTTP Live Streaming的缩写。它是苹果公司实现的...
    xiari1991阅读 864评论 0 0
  • 占据在树枝的最高端 静静承受着雨点地责备 一切幽怨与辩解,且等雨过天晴 满腹委屈,滔滔不绝地冲着阳光 诉说无止无休...
    泰安左眼皮跳跳阅读 237评论 0 4