我想从每个数组中用不同的数字创建一个新数组。这是一个例子:
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文件和行。这就是我想要这种格式的原因。
答案 0 :(得分:0)
您的错误的主要原因是您使用相同名称的循环变量覆盖c
列表 -
for c in range (0,2):
...
因此,c
是int
,c[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)
您有一个与循环变量同名的数组,因此每次循环时都会覆盖数组。