gpt4 book ai didi

python - 替换 numpy 数组值 python

转载 作者:行者123 更新时间:2023-11-28 23:01:11 24 4
gpt4 key购买 nike

我在尝试替换 numpy 数组中的值时遇到了一个非常奇怪的行为,我希望有人能解释一下。本质上我想在遗传算法中进行交叉操作。这是一个简单的例子。我有一个 2 X 10 数组,并希望将第 1 行到第 5 列中的所有值与第 2 行到第 5 列中的值交换。这是代码:

z=np.random.uniform(low=0,high=1,size=(2,10))
zcopy = z
print z

[[ 0.77488523 0.39966358 0.63233664 0.77093136 0.04102615 0.98984184
0.43402537 0.0910648 0.28037032 0.76654885]
[ 0.49980878 0.28161905 0.71972029 0.01208004 0.87851569 0.16853681
0.96325992 0.90886083 0.12344231 0.83665396]]

z[1,range(4)] = zcopy[0,range(4)]
print z

[[ 0.77488523 0.39966358 0.63233664 0.77093136 0.04102615 0.98984184
0.43402537 0.0910648 0.28037032 0.76654885]
[ 0.77488523 0.39966358 0.63233664 0.77093136 0.87851569 0.16853681
0.96325992 0.90886083 0.12344231 0.83665396]]

如您所见,它只是将第 1 行的所有内容复制到两行中。但是,如果我不指定另一个数组的子集,而只是给它说整数,它就可以完美地工作

z[1,range(4)] = range(4)
print z
[[ 0.77488523 0.39966358 0.63233664 0.77093136 0.04102615 0.98984184
0.43402537 0.0910648 0.28037032 0.76654885]
[ 0. 1. 2. 3. 0.87851569 0.16853681
0.96325992 0.90886083 0.12344231 0.83665396]]

我很困惑。有谁知道如何解决这个问题?

最佳答案

试试这个

z=np.random.uniform(low=0,high=1,size=(2,10))
z[:,range(4)] = z[::-1,range(4)]

之前

[[ 0.30778241  0.04832341  0.616925    0.81325565  0.44578265  0.59024722 0.32147695  0.68434105  0.47430297  0.06256859]
[ 0.58522801 0.23922353 0.15388696 0.46400394 0.33126422 0.54651948 0.34724277 0.46974174 0.68646707 0.62549495]]

之后

[[ 0.58522801  0.23922353  0.15388696  0.46400394  0.44578265  0.59024722 0.32147695  0.68434105  0.47430297  0.06256859]
[ 0.30778241 0.04832341 0.616925 0.81325565 0.33126422 0.54651948 0.34724277 0.46974174 0.68646707 0.62549495]]

关于python - 替换 numpy 数组值 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352778/

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