概括NumPy数组中的切片 *** 作

概括NumPy数组中的切片 *** 作,第1张

概括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]])


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5630063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存