gpt4 book ai didi

python - pd.Series 的排列导致就地变化

转载 作者:行者123 更新时间:2023-12-01 08:54:50 26 4
gpt4 key购买 nike

我知道np.random.permutationnp.random.shuffle之间的区别。

但是当我将np.random.permutation用于pd.Series时,它会意外地导致系列就地更改,并且还会导致数据框就地更改。

我知道如何以另一种方式排列它,但我想知道这个设计问题对于numpy还是pandas

演示数据显示:

import pandas as pd
import numpy as np
t = pd.Series([1,2,3,4])
#np.random.permutation(t)
assert all(t == np.random.permutation(t))

它不会引发AssertionError。它将输出一个打乱后的数组。但是当您检查 t 时,它也会发生变化。

如果你使用np.array或者list就可以了。

t = np.array([1,2,3,4])
np.random.permutation(t)
assert all(t == np.random.permutation(t))

它确实会引发AssertionError

最佳答案

这是一个 bug in numpy 。对于一些类似数组的对象,numpy.random.permutation就地洗牌其论点。根据文档字符串,它应该返回输入的打乱副本;它不应该就地更改输入。

正如您在问题中指出的,您可以通过传入实际的 numpy 数组来避免该问题。如果 t 是 Pandas Series,您可以使用 np.random.permutation(t.values)

关于python - pd.Series 的排列导致就地变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com