如果我有两个(或更多)二维数组,如何在给定行号的情况下仅获取数组之间的公共元素。例如,我有以下格式的数组:
time, position, velocity, acceleration
我想让两个数组只具有相同的时间元素,所以第 0 行。我可以使用
np.intersect1d(array1[:, 0], array2[:, 0])
它给出了所有公共时间,但我想从 array1/2 中提取所有匹配的行/列或删除非公共时间元素。到底array1
and array2
将具有完全相同的尺寸,所以我可以去:
pos_difference = array1[:, 1] - array2[:, 1]
数组的大小可以不同,例如:
array1 = [[1, 100.0, 0.0, 0.0], [2, 110.0, 0.0, 0.0], [3, 120.0, 0.0, 0.0]]
array2 = [[1, 101.0, 0.0, 0.0], [3, 119, 0.0, 0.0]]
我只想提取公共时间元素,因此 array1 和 array2 仅在 Time=1 和 Time=3 时包含,因为这些是公共时间元素。然后我可以去:
pos_difference = array1[:, 1] - array2[:, 1]
这将是两个数组同时之间的位置差异:
# First row will be when time=1 and second row will be when time=3
pos_difference = [[0, -1, 0.0, 0.0], [0, 1, 0.0, 0.0]]