[英]Save random values from multi-dimensional NumPy array
我有一个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
的数据将稍后与通过其他方法(数据插补)在其位置估算的值进行比较,因此我需要在原始数据集中删除值的位置。
给定一个二维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
您可以使用其坐标删除条目,但是,您可能希望查看屏蔽数组,而不是从矩阵中删除单个条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.