python - 以相同的方式随机化 2 个 numpy 数组
问题描述
我有 2 个np.ndarray()
对象,我想像这样随机化(或随机播放)它们:
>>> a
[[12. 13. 24. ... 23. 45. 67.] [32. 10. 23. ... 23. 45. 67.] [12. 13. 24. ... 23. 45. 67.] ... [12. 13. 24. ... 23. 45. 67.]]
>>> b
[0. 0. 0. ... 1.]
>>> shuffle(a, b)
>>> a
[[12. 13. 24. ... 23. 45. 67.] [32. 10. 23. ... 23. 45. 67.] [12. 13. 24. ... 23. 45. 67.] ... [12. 13. 24. ... 23. 45. 67.]]
>>> b
[1. 0. 0. ... 0.]
变量中的每个数字b
对应于变量中我的 AI 训练数据的标签a
。
解决方案
使用 Numpy
您可以使用np.c_
将它们混在一起,然后将它们放回单独的数组中 -
import numpy as np
#Creating same X and y for demonstration
X = np.arange(0,10).reshape(5,2)
y = np.arange(0,10).reshape(5,2)
c = np.c_[X,y]
np.random.shuffle(c)
X1, y1 = c[:,:X.shape[1]], c[:,:y.shape[1]]
print(X1)
print(y1)
# Note, same order remains
[[8 9]
[0 1]
[4 5]
[6 7]
[2 3]]
[[8 9]
[0 1]
[4 5]
[6 7]
[2 3]]
使用 Sklearn
更好的选择是使用 sklearn api -
from sklearn.utils import shuffle
X, y = shuffle(X, y, random_state=0)
推荐阅读
- spring - 每个线程环境的上下文中单例范围的 Spring Bean 的线程安全
- insert - couchbase upsert/insert 以 ttl 静默失败
- database - 在不同服务器上安装 Pimcore 数据库
- android - 使用 itemtouchhelper 在另一个回收器视图的项目中使用回收器视图
- ceph - 执行命令失败:env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get --assume-yes -q update
- python - sublime 3 中的自定义语法
- java - 无需重新编译和重建应用程序即可更改 Hibernate xml 映射文件
- html - 如何从引导菜单中删除活动类
- android - 构建 Android 应用时如何从 gradle 生成 OpenAPI 源
- java - 如何从 MaterialDatePicker 获取日期?