使用numpy shuffle后,如何替换数组元素并追加新值?
替代numpy shuffle的实现方案
方案1:纯Python列表 + random模块(完全脱离numpy打乱逻辑)
直接用Python标准库random的工具完成打乱,后续替换、追加操作全程在列表上执行,无需依赖numpy:
- 初始数据可以直接定义为列表,或者从numpy数组通过
tolist()转换而来 - 用
random.shuffle()原地打乱列表,或者random.sample()生成新的打乱列表(不修改原数据) - 列表推导式完成指定值替换
- 用
append()追加新值
代码示例:
import random predCS = pred_CS[0] # 直接用列表初始化数据 prediction = ["Software Engineer / Programmer", "Technical Support Specialist", "Academician", "Administrative Assistant"] # 方式1:原地打乱原列表 random.shuffle(prediction) # 替换指定值 prediction = [item.replace(predCS, '0') for item in prediction] # 追加新值 prediction.append(predCS) # 方式2:生成全新的打乱列表(保留原列表不变) shuffled_pred = random.sample(prediction, k=len(prediction)) shuffled_pred = [item.replace(predCS, '0') for item in shuffled_pred] shuffled_pred.append(predCS)
方案2:用numpy.permutation替代numpy.shuffle
如果仍想基于numpy数组操作,可使用np.random.permutation()替代np.random.shuffle()——前者返回新的打乱数组(不修改原数组),后续替换、追加都能用numpy原生方法完成,无需转列表:
import numpy as np predCS = pred_CS[0] prediction = np.array(["Software Engineer / Programmer", "Technical Support Specialist", "Academician", "Administrative Assistant"]) # 生成打乱后的新数组 shuffled_pred = np.random.permutation(prediction) # 布尔索引替换指定值 shuffled_pred[shuffled_pred == predCS] = '0' # numpy原生方法追加新值 shuffled_pred = np.append(shuffled_pred, predCS)
两种方案各有适用场景:纯Python方案轻量无依赖,适合小规模数据;numpy方案保持数组操作的高效性,适合大数据量场景。
内容的提问来源于stack exchange,提问作者Game Guardian
相关产品推荐
相关产品推荐

