栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

概括NumPy数组中的切片操作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

概括NumPy数组中的切片操作

这是处理通用ndarrays的扩展-

def indices_merged_arr_generic(arr, arr_pos="last"):    n = arr.ndim    grid = np.ogrid[tuple(map(slice, arr.shape))]    out = np.empty(arr.shape + (n+1,), dtype=np.result_type(arr.dtype, int))    if arr_pos=="first":        offset = 1    elif arr_pos=="last":        offset = 0    else:        raise Exception("Invalid arr_pos")    for i in range(n):        out[...,i+offset] = grid[i]    out[...,-1+offset] = arr    out.shape = (-1,n+1)    return out

样品运行

2D外壳:

In [252]: arrOut[252]: array([[37, 32, 73],       [95, 80, 97]])In [253]: indices_merged_arr_generic(arr)Out[253]: array([[ 0,  0, 37],       [ 0,  1, 32],       [ 0,  2, 73],       [ 1,  0, 95],       [ 1,  1, 80],       [ 1,  2, 97]])In [254]: indices_merged_arr_generic(arr, arr_pos='first')Out[254]: array([[37,  0,  0],       [32,  0,  1],       [73,  0,  2],       [95,  1,  0],       [80,  1,  1],       [97,  1,  2]])

3D外壳:

In [226]: arrOut[226]: array([[[35, 45, 33],        [48, 38, 20],        [69, 31, 90]],       [[73, 65, 73],        [27, 51, 45],        [89, 50, 74]]])In [227]: indices_merged_arr_generic(arr)Out[227]: array([[ 0,  0,  0, 35],       [ 0,  0,  1, 45],       [ 0,  0,  2, 33],       [ 0,  1,  0, 48],       [ 0,  1,  1, 38],       [ 0,  1,  2, 20],       [ 0,  2,  0, 69],       [ 0,  2,  1, 31],       [ 0,  2,  2, 90],       [ 1,  0,  0, 73],       [ 1,  0,  1, 65],       [ 1,  0,  2, 73],       [ 1,  1,  0, 27],       [ 1,  1,  1, 51],       [ 1,  1,  2, 45],       [ 1,  2,  0, 89],       [ 1,  2,  1, 50],       [ 1,  2,  2, 74]])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号