【问题标题】:Numpy arrays in a for loop [closed]for循环中的numpy数组[关闭]
【发布时间】:2019-01-03 22:56:49
【问题描述】:

我想在一个循环中完成以下工作:

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 个数字,但随后会重复该数字两次。不知道发生了什么。

【问题讨论】:

  • 您忘记告诉我们输出应该是什么样子。另外,您的示例不完整,我们无法运行代码。
  • 不清楚你的变量代表什么。例如,Z1Z2 等于什么?
  • Z1 和 Z2 只是浮点变量。
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。

标签: python python-3.x numpy


【解决方案1】:

解决方案:

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”来避免这种情况总是从每个列表)。

【讨论】:

  • 这是什么问题的答案? (我是认真的,我想知道OP想要做什么。)
  • 哦,-1 做到了。谢谢。我还在学习。
  • 代码是一个循环,相当于 OP 启动的模式(两个列表 A 和 B,具有一些初始值 A1 和 B1,其中,对于两个常量 Z2 和 Z1,A[i > 1] = B[i - 1] * Z2 和 B[i > 1] = B[i] * Z1)。除此之外,我不知道实际代码的目的是什么,除了在列表中轻松生成更多项目的直接目标......
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2019-09-11
相关资源
最近更新 更多