【发布时间】:2018-01-30 15:32:45
【问题描述】:
我有一个大小为 ~70k * 10k 的 2d numpy 数组。我想用零替换每行中小于“N”最大元素的所有值。例如:
arr = np.array([[1, 0, 6, 5, 2, 5],
[7, 5, 2, 6, 7, 3],
[3, 5, 1, 5, 6, 4]])
对于N = 3,结果应该是:
result = np.array([[0, 0, 6, 5, 0, 5], # 3 largest in row: 6, 5, 5
[7, 0, 0, 6, 7, 0],
[0, 5, 0, 5, 6, 0]])
未被替换的数字的位置和数组的形状应该保持不变。
【问题讨论】:
-
您自己尝试过什么吗?对如何去做有任何想法吗?
-
也有类似stackoverflow.com/questions/30332908/… 这样的问题,但是 np.partition 改变了数组的形状,这是我必须避免的。
-
我得到的第三个谷歌结果是this。应该足以让您入门。
-
你的第三个谷歌结果大约是一个特定的值 (255)。我需要独立确定每一行的 N 最大值,因为在每一行中它们可能不同。我想找到最优雅的解决方案。
-
同一个数组但 N=2 的结果应该是什么?即如何处理重复?
标签: python numpy multidimensional-array