使用numpy在循环中在数组中创建数组

时间:2014-11-06 14:30:01

标签: python arrays numpy

我必须列出:

a=[1,2,3]

b=[4,5,6]

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

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

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

致电c[1]将返回array([[4, 5, 6]])。我如何访问,例如5进入阵列?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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的回答。

答案 2 :(得分:0)

声明

如果从外部源(也就是文件)将数字列表读入您的程序,则不推荐您的预期程序(我的答案毫无意义),因为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]]