使用Nd数组切片N + 1d Numpy数组

时间:2020-05-09 22:10:29

标签: python-3.x numpy numpy-slicing

为了测试单个值输出上的各种参数,我正在创建一个多维数组来存储值。但是,为了相应地更新值,我需要计算要更新的位置。为了加快速度,我想用N-1维数组对N维数组进行切片。 例如,如果我有一个二维数组: ''' arr = 1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5 '''

和切片数组: ''' 切片器= [2、3、1、3、5] ''' 可以这样做吗?

arr [:slicer] =

1 2 N N N

1 2 3 N N

1 N N N N

1 2 3 N N

1 2 3 4 5

其中N是Nan或Nul或为空。

这可能吗?如果没有,什么是实现相同结果的最佳/最快方法?

要明确的是,在理想的世界中,我将可以执行以下操作:

arr [:slicer] = arr [:slicer] *更新

2 个答案:

答案 0 :(得分:0)

arr = ['1 2 3 4 5', '1 2 3 4 5', '1 2 3 4 5', '1 2 3 4 5', '1 2 3 4 5']
slicing_list = [2, 3, 1, 3, 5]
result = ""
arr_len = len(arr)
for st in arr:
    for n in slicing_list:
        result = " ".join(st.split()[:n])
        # the length of the sliced numbers without whitespaces
        result_len = len(st.split()[:n])
        if arr_len>result_len:
            for i in range((arr_len)-result_len):
                result += " N"
        print("result: "+ result)

答案 1 :(得分:0)

适应其他SO中使用的想法填充数组:

In [481]: arr = np.arange(1,6)*np.ones((5,1),int).astype(object)                                       
In [482]: arr                                                                                          
Out[482]: 
array([[1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5],
       [1, 2, 3, 4, 5]], dtype=object)
In [483]: mask = slicer[:,None]<=np.arange(5)                                                          
In [484]: mask                                                                                         
Out[484]: 
array([[False, False,  True,  True,  True],
       [False, False, False,  True,  True],
       [False,  True,  True,  True,  True],
       [False, False, False,  True,  True],
       [False, False, False, False, False]])
In [485]: arr[mask] = None                                                                             
In [486]: arr                                                                                          
Out[486]: 
array([[1, 2, None, None, None],
       [1, 2, 3, None, None],
       [1, None, None, None, None],
       [1, 2, 3, None, None],
       [1, 2, 3, 4, 5]], dtype=object)
相关问题