Предположим, у меня есть массив numpy, сгенерированный следующим образом:
np.random.seed(1)
arr = np.random.randint(10,size=(5,2))
, который производит следующее:
array([[5, 8],
[9, 5],
[0, 0],
[1, 7],
[6, 9]])
Как мне:
- случайно добавить новый столбец с его собственным диапазоном , убедившись, что его значения НЕ соответствуют никаким значениям в других столбцах? Например, простое добавление другого массива не будет работать, потому что это не будет гарантировать, что не будет иметь дублирующиеся значения.
Следующее будет недопустимым, поскольку, как мы видим в первой строке, третий столбец это 8, где второй столбец также 8:
np.append(arr, np.random.randint(10,size=(5,1)), axis=1)
array([[5, 8, 8],
[9, 5, 8],
[0, 0, 6],
[1, 7, 2],
[6, 9, 8]])
Подвопрос:
- как создать другой столбец со значениями, отличными от выбранных столбцов, например все в порядке, чтобы значение было равно второму столбцу, но запрещается совпадать с первым столбцом.
Я понимаю, что это можно сделать с помощью стандартных для циклов , но это резко снизит производительность, если мы говорим о миллионах строк, поэтому я ищу векторизованное решение.