【问题标题】:How to remove duplicates from a numpy array with multiple dimensions如何从具有多个维度的 numpy 数组中删除重复项
【发布时间】:2020-10-19 00:39:23
【问题描述】:

假设我有以下数组:

board = np.random.randint(1, 9, size=(2, 5))

如何从数组中的每个元素中删除重复项 例如

[[6 1 2 8 4]
[8 3 2 3 6]]

所以这里有两个3,我想删除其中一个,我该怎么做呢?

【问题讨论】:

  • 欢迎来到 SO。你试过什么?您是否知道如何为一维数组执行此操作?也许可以扩展该解决方案。请向我们展示您的努力:) 也许您还可以添加删除条目应该发生的情况(np.arrays 不会有不同长度的行)。
  • 您好,感谢您的回答,我已经尝试过一维,效果很好。我还确保每次删除某些内容时添加一个新数字以保持与以前相同的长度。问题是每次运行程序时都不会删除任何内容。此外,我应该提到的是,它没有任何语法错误,它只是错误并不断运行。
  • 请向我们展示您目前拥有的代码。您想允许 不同 行中的重复项吗?因为在那种情况下,你可以只应用你的一维。行上的代码。 This question 也可能有帮助(在我看来像是一个骗子)。

标签: arrays python-3.x numpy duplicates


【解决方案1】:

鉴于您的示例,您似乎不希望相对于行重复。您可能对numpy.random.choice 感兴趣并尝试以下操作:

import numpy as np

nb_lines = 2
nb_columns = 5
min_value = 1
max_value = 9
range_value = max_value-min_value

# The number of columns should be <= than the integer range to have a solution
assert(range_value+1 >= nb_columns)

board = min_value + np.array([
  np.random.choice(np.arange(range_value+1), nb_columns, replace=False)
  for l in range(nb_lines)
])

print(board)

输出:

% python3 script.py
[[7 4 6 3 1]
 [2 8 6 4 3]]

【讨论】:

  • 是的,我确实对不同行中的重复不感兴趣。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 2011-11-18
  • 2020-02-18
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
相关资源
最近更新 更多