用多个数组制作一个数组

时间:2018-01-08 21:28:13

标签: python excel

我想从每个数组中用不同的数字创建一个新数组。这是一个例子:

import numpy as np


a=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
b=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
v=[[0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10],[0,1,2,3,4,5,6,7,8,9,10]]
d=[]

for c in range (0,2):
    d.append([])
    for s in range (0,10):
        d[c] =np.concatenate((a[c][s],b[c][s],v[c][s]))

print(d)

当我打印'd'时,它给了我一个TypeError:'int'对象不是可订阅的。

这是由于连接功能吗?或者我可以使用堆栈吗?

我希望结果如下:

d[0][1]= [-1,-1,-1] 

d[1][1]=[1,1,1]

从每个数组中获得第n个术语。 d [0] [0]索引到excel文件和行。这就是我想要这种格式的原因。

2 个答案:

答案 0 :(得分:0)

您的错误的主要原因是您使用相同名称的循环变量覆盖c列表 -

for c in range (0,2):
    ...

因此,cintc[c][s]显然对python无效。

您似乎正在寻找dstack -

d = np.dstack((a, b, c))

d
array([[[  0,   0,   0],
        [ -1,  -1,  -1],
        [ -2,  -2,  -2],
        [ -3,  -3,  -3],
        [ -4,  -4,  -4],
        [ -5,  -5,  -5],
        [ -6,  -6,  -6],
        [ -7,  -7,  -7],
        [ -8,  -8,  -8],
        [ -9,  -9,  -9],
        [-10, -10, -10]],

       [[  0,   0,   0],
        [  1,   1,   1],
        [  2,   2,   2],
        [  3,   3,   3],
        [  4,   4,   4],
        [  5,   5,   5],
        [  6,   6,   6],
        [  7,   7,   7],
        [  8,   8,   8],
        [  9,   9,   9],
        [ 10,  10,  10]]])

v[0][1]
array([-1, -1, -1])

v[1][1]
array([1, 1, 1])

答案 1 :(得分:-1)

您有一个与循环变量同名的数组,因此每次循环时都会覆盖数组。