Сохранить случайные значения из многомерного массива NumPy - PullRequest
0 голосов
/ 26 января 2019

У меня есть массив NumPy 149x5.Мне нужно сохранить некоторые (30%) значений, выбранных случайным образом из всего массива.Кроме того, выбранные значения будут удалены из данных.

Что у меня есть:

# Load dataset
data = pd.read_csv('iris.csv')

# Select randomly 30%(45) of rows from dataset
random_rows = data.sample(45)

# Object for values to be saved
values = []

# Iterate over rows and select a value randomly.
for index, row in data.iterrows():

   # Random between 1 - 5
   rand_selector = randint(0, 4)

   # Somehow save deleted value and its position in data object
   value = ??                                                 <-------

   values.append(value)

   # Delete random value
   del row[rand_selector]

Для дальнейшего добавления данные из value будут позже сравниваться со значениями, вмененными в их место.другими методами (вменение данных), поэтому мне нужно положение удаленного значения в исходном наборе данных.

1 Ответ

0 голосов
/ 26 января 2019

Этот метод, учитывая двумерную матрицу m, возвращает массив длины 0.3*m.size, содержащий массивы длины 3, состоящие из случайного значения и его координат в м.

def pickRand30(data):
    rand = np.random.choice(np.arange(data.size), size = int(data.size*0.3))
    indexes1 = rand//data.shape[1]
    indexes2 = rand%data.shape[1]
    return np.array((data[indexes1, indexes2], indexes1, indexes2)).T

Вы можете удалить записи, используя их координаты, однако вы можете захотеть взглянуть на замаскированные массивы вместо того, чтобы удалять отдельные записи из матрицы.

...