Python 拆分数组s.t子数组与原始数组之和

Python 拆分数组s.t子数组与原始数组之和,python,arrays,algorithm,numpy,Python,Arrays,Algorithm,Numpy,我正试图找到一种聪明的方法,将一个numpy整数数组随机分成两部分,使这两部分和原始数组相加 示例: a = np.array([0,1,2,3]) b, c = rand_split(a) # Should give something like # b = [0, 1, 1, 2], c = [0, 0, 1, 1] 编辑:所有条目都应该是非负数。这里有一个列表理解的解决方案: b = np.array([np.random.randint(0, n+1) for n in a]) c =

我正试图找到一种聪明的方法,将一个numpy整数数组随机分成两部分,使这两部分和原始数组相加

示例:

a = np.array([0,1,2,3])
b, c = rand_split(a)
# Should give something like
# b = [0, 1, 1, 2], c = [0, 0, 1, 1]

编辑:所有条目都应该是非负数。

这里有一个列表理解的解决方案:

b = np.array([np.random.randint(0, n+1) for n in a])
c = a - b
这应该更快,因为它在numpy中完成所有工作:

b = (np.random.uniform(size=a.shape) * (a + 1)).astype(int)

下面是一个列表理解的解决方案:

b = np.array([np.random.randint(0, n+1) for n in a])
c = a - b
这应该更快,因为它在numpy中完成所有工作:

b = (np.random.uniform(size=a.shape) * (a + 1)).astype(int)

可能有很多组合。那么,你会如何挑选唯一的呢?@Divakar:是的,但我只是在寻找其中一个,随机挑选的。嗯,那么:
[a-a//2,a//2]
?我想这将永远导致相同的拆分,不是吗?我在寻找一个随机的分割。可能有很多组合。那么,你会如何挑选唯一的呢?@Divakar:是的,但我只是在寻找其中一个,随机挑选的。嗯,那么:
[a-a//2,a//2]
?我想这将永远导致相同的拆分,不是吗?我在寻找一个随机的分割。b和c都是numpy数组,对吗?我不明白“我找不到一个方法来做它只有numpy”美好的想法与第二个!b和c都是numpy数组,对吗?我不明白“我找不到一个方法来做它只有numpy”美好的想法与第二个!