【问题标题】:Create arrays in array in a loop using numpy使用 numpy 在循环中创建数组
【发布时间】:2014-11-06 14:30:01
【问题描述】:

我必须列出:

a=[1,2,3]

b=[4,5,6]

我想创建一个包含两个列表的数组的数组,所以我做了

c=np.array([[a],[b]])

我的问题是:如何在循环中实现它?要创建一个空数组,然后在数组中创建数组?

调用c[1] 将返回array([[4, 5, 6]])。我如何访问例如5入数组?

【问题讨论】:

  • 没有[4,5,6]的数组。
  • @VishnuUpadhyay 我改变了 b

标签: python arrays numpy


【解决方案1】:

你想要这个吗?

a = [1,2,3];
b = [4,5,6];
c = [a,b];

c[1][1] # Gives you 5

循环执行

for z in [a,b]:
    c.append(z)

# continue as usual......

此外,您实际上并不需要 numpy 来执行此操作。如果你这样做,请按照上面@Taha 的回答。

【讨论】:

  • 很高兴知道 :) 请记住,如果您打算使用它制作可移植的 python 脚本,那么我不推荐导入 numpy。拥有像 numpy 这样好的模块是好的,但如果这不是标准 python 发行版的一部分,那么它可能会影响可移植性和兼容性。
【解决方案2】:

c[1] 会给[[4 5 6]] 访问 5 你应该c[1][0][1]

import numpy as np
b=[4,5,6]
a=[1,2,3]
c=np.array([[a],[b]])

print c[1][0][1]

更新

这样做更容易:

import numpy as np
b=[4,5,6]
a=[1,2,3,9] #I added an element to clarify how to manage indexes in case u have diff sizes
c=np.array([a,b])

#j= sum(1 for x in c if isinstance(x, np.ndarray)) Another way to see how many item in the list

for j in range(len(c)): #Selecting the list (a,b ..)
    i=0
    while i<=len(c[j])-1: #Looping in the list
        print "index (",i,",",j,"):",c[j][i]
        i+=1

【讨论】:

  • 谢谢,如何循环执行?
  • @DimKoim 如果这是您的想法,请在下面更新我的答案:)
  • 除了hagubear的回答之外,我还阐明了如何循环和打印所有元素。 +我修改了这个例子来展示如何在你有不同大小的情况下管理索引(检查更新)
【解决方案3】:

免责声明

如果从外部源(又名文件)将数字列表读入您的程序,则不建议使用您的预期过程(我的回答毫无意义),因为numpy 提供了许多执行此操作的i/o 函数一种透明且高效的工作,例如numpy.loadtxt

程序示例

import numpy as np

r = [1,2,3]
s = [4,5,6]
t = [7,8,9]

arr = np.array([row for row in (r,s,t)])
print arr

输出

# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 2020-10-22
    • 2020-11-12
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2010-09-21
    • 2015-03-15
    相关资源
    最近更新 更多