首页 > 解决方案 > for循环中的numpy数组

问题描述

我想在循环中完成以下操作:

A1 = a/(a+b)
B1 = A1*Z1
A2 = B1*Z2
B2 = A2*Z1
A3 = B2*Z2
B3 = A3*Z1
.
.

我尝试将值放在这样的列表中:

val_A = []
val_B = []
val_A.append(A1)
val_B.append(B1)

for i in range(5):
    val_A.append(val_B[i]*Z1)
    val_B.append(val_A[i]*Z2)


Output
[0.9090909090909091, -0.4958677685950413, -0.4958677685950413, 0.270473328324568, 0.270473328324568]

它适用于前 2 个数字,但随后会重复该数字两次。无法弄清楚发生了什么。

标签: pythonpython-3.xnumpy

解决方案


解决方案:

val_A = []
val_B = []
val_A.append(A1)
val_B.append(B1)

for i in range(5):
    val_A.append(val_B[-1] * Z2)
    val_B.append(val_A[-1] * Z1)

演示:( 在一个简单的测试用例上,证明它有效)

# Manual
Z1 = 2
Z2 = 3
A1 = 5
B1 = 7
A2 = B1*Z2
B2 = A2*Z1
A3 = B2*Z2
B3 = A3*Z1

print([A1, A2, A3], [B1, B2, B3])

# With for loop

val_A = []
val_B = []
val_A.append(A1)
val_B.append(B1)

for i in range(2):
    val_A.append(val_B[-1] * Z2)
    val_B.append(val_A[-1] * Z1)

print(val_A, val_B)

产量:

[5, 21, 126] [7, 42, 252]
[5, 21, 126] [7, 42, 252]

解释:

OP 代码混淆了 Z1 和 Z2(B 应该乘以 Z2)并且还使用错误的索引从列表中选择项目(此代码通过使用“-1”来避免这种情况,总是从每个列表中获取最后一个项目) .


推荐阅读