我如何将一个结构化的Numpy数组的切片分配给另一个?

问题描述 投票:1回答:1

我有两个numpy结构化数组arr1arr2arr1具有字段['f1','f2','f3']arr2具有字段['f1','f2','f3','f4']。即:

arr1 = [[f1_1_1,  f2_1_1,  f3_1_1 ],    arr2 = [[f1_2_1,  f2_2_1,  f3_2_1,  f4_2_1 ],
        [f1_1_2,  f2_1_2,  f3_1_2 ],            [f1_2_2,  f2_2_2,  f3_2_2,  f4_2_2 ],
        ...                        ,            ...                                 ,
        [f1_1_N1, f2_1_N1, f3_1_N1]]            [f1_2_N2, f2_2_N2, f3_2_N2, f4_2_N2]]

我想将arr1的各个片分配给arr2的相应片(索引和字段中的片)。有关各种情况,请参见下文。

从我发现的答案(到相关,但不是完全相同的问题),在我看来,唯一的方法是一次为单个字段分配一个切片,即类似

arr2['f1'][0:1] = arr1['f1'][0:1]

((我可以确认这是可行的),遍历切片中的所有源字段。

是否可以同时分配切片中所有预期的源字段?


我的意思是分配图像中的元素x

案例1(仅arr1中的某些字段)

arr1 = [[  x   ,    x   ,  f3_1_1 ],    arr2 = [[  x   ,    x   ,  f3_2_1,  f4_2_1 ],
        [  x   ,    x   ,  f3_1_2 ],            [  x   ,    x   ,  f3_2_2,  f4_2_2 ],
        ...                        ,            ...                                 ,
        [f1_1_N1, f2_1_N1, f3_1_N1]]            [f1_2_N2, f2_2_N2, f3_2_N2, f4_2_N2]]

案例2arr1中的所有字段)>

arr1 = [[  x   ,    x   ,    x    ],    arr2 = [[  x   ,    x   ,    x   ,  f4_2_1 ],
        [  x   ,    x   ,    x    ],            [  x   ,    x   ,    x   ,  f4_2_2 ],
        ...                        ,            ...                                 ,
        [f1_1_N1, f2_1_N1, f3_1_N1]]            [f1_2_N2, f2_2_N2, f3_2_N2, f4_2_N2]]

案例3

arr1具有字段['f1','f2','f3','f5']arr2具有字段['f1','f2','f3','f4']。分配一个['f1','f2','f3']

来源:

Python Numpy Structured Array (recarray) assigning values into slices

Convert a slice of a structured array to regular NumPy array in NumPy 1.14

我有两个numpy结构化数组arr1,arr2。 arr1具有字段['f1','f2','f3']。 arr2具有字段['f1','f2','f3','f4']。即:arr1 = [[f1_1_1,f2_1_1,f3_1_1],arr2 = [[f1_2_1,f2_2_1,...

arrays numpy slice structured-array
1个回答
1
投票

例如,您可以这样做:

© www.soinside.com 2019 - 2024. All rights reserved.