【问题标题】:Can anybody help me with my `for loops` using numpy vstack?任何人都可以使用 numpy vstack 帮助我解决我的“for 循环”吗?
【发布时间】:2021-12-29 22:38:20
【问题描述】:

假设我有大约 640 个 numpy 数组要垂直堆叠。每个数组的大小为 (66, 1)。像这样手动执行此操作:

A = np.vstack((Ne['State_1_inc'], Ne['State_2_inc'], Ne['State_3_inc'], Ne['State_4_inc'], ..., Ne['State_640_inc']))

显然会花费很长时间并且非常耗时。最终结果将具有大小为 (66,640) 的 A。任何人都知道我是否可以做一个for loop,它将传递我所有的 640 个状态,以便我可以构建我的矩阵?刚开始在这里编程,谢谢!

【问题讨论】:

  • 你的意思是np.vstack([Ne['State_%s_inc' % i] for i in range(1, 641)])
  • 也许……让我试试吧。
  • 我认为因为我们的模 % 在字符串中,python 将对象读取为 Ne['State_%s_inc'],其中我的所有状态都写在 Ne['State_n_inc'] 中,其中 n=(1,640]。
  • 这是字符串格式:'State_%s_inc' % i。确保包含% i 部分。

标签: python numpy for-loop vstack


【解决方案1】:

假设您想使用字典中的所有元素:

Ne = {1: [1,2,3], 2: [4,5,6]}
np.vstack(list(Ne.values()))
# array([[1, 2, 3],
#        [4, 5, 6]])

否则你可以使用字典理解:

np.vstack([Nef[f'State_{i+1}_inc'] for i in range(640)])

【讨论】:

  • 这看起来很有希望。但我仍然遇到错误。 in (.0) ----> 1 A = np.vstack(([Ne['State_{i+1}_complete'] for i in range(640) ])) KeyError: 'State_{i+1}_complete'
  • 可能是因为for循环中的变量i在一个字符串里面导致了一些问题?
  • 我忘记了 f-string 的f,检查更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多