【问题标题】:numpy.random.permutation lose a columnnumpy.random.permutation 丢失一列
【发布时间】:2014-07-21 08:32:41
【问题描述】:

首先很抱歉,我没有很好的编程技能,我正在为我的自然科学硕士论文学习 Python。

在我的脚本中有这段代码:

self._dumpArrayToFile(movers, 'movers_'+str(y)+'_'+str(r)+'.csv')
moversCats = numpy.random.permutation(movers['cat'])
self._dumpArrayToFile(moversCats, 'movers_'+str(y)+'_'+str(r)+'_shuffled.csv')

第一行打印出一个包含两列的 .csv 文件,第二行将数组按第一列 (cat) 打乱,最后一行打印出打乱后的文件;问题是洗牌文件只有一列,即cat

如何在不丢失第二列的情况下对数组进行洗牌?

【问题讨论】:

  • 与我一起研究脚本的研究人员已经尝试对整个移动器数组进行洗牌,但这给出了一些错误,即重复

标签: python numpy permutation


【解决方案1】:

您只将一列传递给permutation,所以这就是所有被洗牌的东西。每the documentation

如果x 是一个多维数组,它只会沿着它的第一个索引打乱。

这个例子清楚地表明了这意味着什么:

>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.permutation(arr)
array([[6, 7, 8],
       [0, 1, 2],
       [3, 4, 5]])

请注意,行的内容保持不变,但它们是随机重新排序的。因此,您可以传递整个数组,而不仅仅是 cat 列:

moversCats = numpy.random.permutation(movers)

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 2020-03-17
    • 2020-04-10
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多