保存多维NumPy数组中的随机值

时间:2019-01-26 19:42:25

标签: python pandas numpy dataframe random

我有一个149x5 NumPy数组。我需要保存从整个数组中随机选择的一些(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 :(得分:0)

在给定2D numpy矩阵m的情况下,此方法将返回长度为0.3*m.size的数组,其中包含长度为3的数组,该数组由一个随机值及其在m中的坐标组成。

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

您可以使用其坐标删除条目,但是您可能希望浏览masked arrays,而不是从矩阵中删除单个条目。