【发布时间】:2019-10-24 14:35:43
【问题描述】:
我有一个正整数列表,我想从所有元素中重复减去最小元素,但前提是该元素不是最小值的实例。例如,在一次迭代中
a = np.array([3, 5, 9, 3, 3]) 变为 [3, 2, 6, 3, 3] 并最终变为 [1,1,1,1,1]。
也就是说,没有条目会减少到 0。我怀疑可能存在一种简单的方法来修改 a - min(a),使得 a[0]、a[3] 和 a[4] 不会变为 0,但是我不知道。
我知道这可以通过列表理解来完成:
while len(set(arr)) > 1:
arr = [a - min(arr) if a > min(arr) else a for a in arr]
虽然数组可能非常大,所以考虑到时间效率,我希望 NumPy 有一种方便的方法来做到这一点。我对 Python 还是很陌生,因此感谢所有能力的更正/信息。
【问题讨论】:
-
我相信最终的结果会是一个充满原始数组的GCD的数组。
标签: python arrays performance numpy