为什么这段python代码只产生最后的结果

为什么这段python代码只产生最后的结果,python,reverse,Python,Reverse,我想计算满足条件的矩阵: 结果_x=1-初始_x result\u y=初始值 results\u z=initial\u y 但是,我的代码只生成每个数组的最后一个。你能帮我一下吗 import numpy as np import math def reverse_a_direction(matrix): reverse_a = [] for (x, y, z) in matrix: reverse_a = 1 - x, y, z return re

我想计算满足条件的矩阵:
结果_x=1-初始_x

result\u y=初始值
results\u z=initial\u y

但是,我的代码只生成每个数组的最后一个。你能帮我一下吗

import numpy as np
import math

def reverse_a_direction(matrix):
    reverse_a = []
    for (x, y, z) in matrix:
        reverse_a = 1 - x, y, z
    return reverse_a

a = np.array([[(0.1666666666666667, 0.8012144614989793, 0.7500000000000000), 
               (0.1666666666666667, 0.1987855385010207, 0.2500000000000000)], 
              [(0.6666666666666666, 0.3012144614989793, 0.7500000000000000), 
               (0.6666666666666666, 0.6987855385010207, 0.2500000000000000)]])

for i in range(0, len(a)):
    print(reverse_a_direction(a[i]))
此代码的结果:

(0.8333333333333333, 0.1987855385010207, 0.25)
(0.3333333333333333, 0.6987855385010207, 0.25)
预期成果:

[(0.8333333333333333, 0.8012144614989793, 0.75), (0.8333333333333333, 0.1987855385010207, 0.25)],
[(0.3333333333333333, 0.3012144614989793, 0.75), (0.3333333333333333, 0.6987855385010207, 0.25)]

每次迭代都会覆盖反向_a。正确的解决办法是:

def reverse_a_direction(matrix):
    reverse_a = []
    for (x, y, z) in matrix:
        a = 1 - x, y, z
        reverse_a.append(a)
    return reverse_a

每次迭代都会覆盖反向_a。正确的解决办法是:

def reverse_a_direction(matrix):
    reverse_a = []
    for (x, y, z) in matrix:
        a = 1 - x, y, z
        reverse_a.append(a)
    return reverse_a

反转逻辑不会捕获结果,但会覆盖,因此最后一个结果会保存在
reverse\u a[]
变量中

将您的作业从

 reverse_a = 1 - x, y, z


反转逻辑不会捕获结果,但会覆盖,因此最后一个结果会保存在
reverse\u a[]
变量中

将您的作业从

 reverse_a = 1 - x, y, z


给定原始阵列:

X = np.array([
    [
        [0.1666666666666667, 0.8012144614989793, 0.7500000000000000],
        [0.1666666666666667, 0.1987855385010207, 0.2500000000000000]
    ], 
    [
        [0.6666666666666666, 0.3012144614989793, 0.7500000000000000],
        [0.6666666666666666, 0.6987855385010207, 0.2500000000000000]
    ]
])
可以按如下方式修改该轴:

Y = np.array(X)
Y[:,:,0] = 1 - Y[:,:,0]

给定原始阵列:

X = np.array([
    [
        [0.1666666666666667, 0.8012144614989793, 0.7500000000000000],
        [0.1666666666666667, 0.1987855385010207, 0.2500000000000000]
    ], 
    [
        [0.6666666666666666, 0.3012144614989793, 0.7500000000000000],
        [0.6666666666666666, 0.6987855385010207, 0.2500000000000000]
    ]
])
可以按如下方式修改该轴:

Y = np.array(X)
Y[:,:,0] = 1 - Y[:,:,0]

你只会得到最后一个结果,你会覆盖内存。你只会得到最后一个结果,你会覆盖内存。