【发布时间】:2015-01-10 16:15:50
【问题描述】:
我有一个 np 数组,它按以下方式构造为其他 2 个数组的交集:
第一个数组是:
[['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
...,
['}' 'was postponed']
['}' 'was']
['}' '{of']]
第二个数组是:
[['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
...,
['}' 'was postponed']
['}' 'was']
['}' '{of']]
这两个数组其实有很多不同,但主要出现在中间行。
用于构造交集的代码是:
def multidim_intersect(arr1, arr2):
arr1_view = arr1.view([('',arr1.dtype)]*arr1.shape[1])
arr2_view = arr2.view([('',arr2.dtype)]*arr2.shape[1])
intersected = np.intersect1d(arr1_view, arr2_view)
return intersected.view(arr1.dtype).reshape(-1, arr1.shape[1])
输出的数组是:
[['!' '!']
['!' '! !']
['!' '! ! !']
...,
['}' 'was']
['}' 'was postponed']
['}' '{of']]
如您所见,我的新数组的排序方式与原来的两个数组不同(在单个感叹号之前排序有多个感叹号,就像在 LC_ALL=C 排序中所做的那样)。有没有办法像我的其他数组一样对我的输出数组进行排序?请注意,数组的形状很重要。
@Mr E arr1 和 arr2 最初是列表。我不能给你确切的副本,但我会尽力构建一个例子来说明我需要什么。
arr1 = [['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
['!' '!']
['}' 'was postponed']
['}' 'was']
['}' '{of']]
arr2 = [['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
['!' '!']
['}' 'was postponed']
['}' 'was']
['}' '{of']]
理想情况下,输出是:
[['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
['!' '!']
['}' 'was postponed']
['}' 'was']
['}' '{of']]
但实际上是:
[['!' '!']
['! ! !' '! ! ! !']
['! ! !' '! ! ! "']
['! ! !' '! ! ! .']
['}' 'was postponed']
['}' 'was']
['}' '{of']]
或类似的东西。
【问题讨论】:
-
你能给
arr1和arr2提供可以复制粘贴到终端或编辑器的Python 代码吗? -
当然只是有代表性的东西,理想情况下是您期望的输出
-
我编辑了我的问题。
标签: python arrays sorting numpy