【发布时间】:2020-04-01 18:05:46
【问题描述】:
我有两个 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, 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]]
案例 2(arr1 中的所有字段)
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
【问题讨论】:
-
多个字段索引在版本
1.16周围发生了变化,因此早期的答案可能不适用。查看文档。 -
@hpaulj - 非常相关的信息,我会阅读的。同时,您认为这个问题的答案是“是”还是“不是”?
标签: arrays numpy slice structured-array