【问题标题】:Initialize 2D array within loop在循环内初始化二维数组
【发布时间】:2017-08-07 06:22:54
【问题描述】:

我想用循环中的数据创建二维数组。每次循环迭代都应在数组中添加数组。例如从 [ ] => [ [2,3] ] => [ [2,3] , [3,4] ] => [ [2,3] , [3,4] , [7,3 ] ] 和类似的。

import numpy as np

output_arr = np.array([])

for i in range(0,4): 
   temp_arr = np.ones(2)
   print temp_arr.shape
   output = np.append((output_arr, temp_arr))

print output_arr.shape  

这里np.append 是示例代码,我需要在其中将/追加/hstack 数组连接在一起...(np.append 不起作用。)
如何在循环中填充二维数组?

【问题讨论】:

  • 你有什么问题?
  • 如何追加它会使二维数组... np.append 不起作用...
  • 坚持您在开始时显示的列表附加。然后从嵌套列表中创建数组。
  • 忘记np.append。学习改用np.concatenate。查看np.append 代码以了解我为什么这么说。

标签: python arrays loops numpy


【解决方案1】:

从一个空的列表开始:

output_arr = []

在循环内追加:

for _ in range(5):
    output_arr.append([1, 1])

在循环之外,只需调用np.array

X = np.array(output_arr)

【讨论】:

  • 谢谢。这行得通。但是有没有办法只使用数组而不涉及列表。只是问...
  • @Chathuranga94 是的。如果您将数组而不是列表附加到外部列表,它将起作用。但是,将数组附加到数组并不简单,因为 numpy 数组是不可变的。如果有帮助,请随时标记为已接受。
  • 从技术上讲,您的答案是 OP 要求的,但这可以通过单个列表理解来完成。
【解决方案2】:

如果你真的只想用numpy构造,在开头构造一个np.empty数组,然后如果需要对数组当前填充的部分进行操作,使用output[:i+1]

import numpy as np

output_arr = np.empty((5,2))

for i in range(0,4): 
   temp_arr = np.ones(2)
   print temp_arr.shape
   output_arr[i] = temp_arr
   print output_arr[:i + 1].shape

print output_arr.shape

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2013-01-28
    • 2012-05-20
    相关资源
    最近更新 更多