形状不匹配的Python

时间:2019-01-16 11:25:41

标签: python valueerror

因此,我正在尝试创建一个由我(实际上是其他人,但是没关系)定义的一些标准值的3D数组 这是我的代码:

Tt = 120 # Total duration (sec)
delta = 0.001 # Time bin (sec)
T = Tt/delta # number of time bins
Ncells = 8;
Cmap = np.zeros([Ncells,Ncells,int(T)])
ExcInhID = np.expand_dims([1, -1, 1, -1, 1, -1, 1], axis =1)
a = list(range(0,int(T)))

for t in a:
    Cmap[:,:,t] = (-1)*np.identity(Ncells)
    Cmap[1:,0,t] = list(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)))
    CC5 = list(np.arange(0,Ncells)) ; del CC5[4];
    Cmap[CC5,4,t] = list(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)))
    Cmap[6,2,t] = 1; Cmap[5,7,t] = -1; Cmap[1,5,t] = 1;

直到

都有效
Cmap[CC5,4,t] = list(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)))  Cmap[CC5,4,t] = list(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)))

出现错误的地方:

  

ValueError:形状不匹配:形状(7,1)的值数组不能为   广播到形状(7,)的索引结果

这很奇怪,因为它确实在这里的另一行上起作用:

 Cmap[1:,0,t] = list(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)))

我已经尝试了一切,现在不知道该怎么办。 你们有建议吗?

1 个答案:

答案 0 :(得分:0)

我不确定您为什么在第一次执行时没有出错而在第二次执行时才出错。但是,如果您按以下方式更改行,则一切正常。

来自

Cmap[1:,0,t] = list(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)))
....
Cmap[CC5,4,t] = list(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)))

Cmap[1:,0,t] = np.stack(ExcInhID*np.ones([Ncells-1,1])*(1 - min(max(t-T/3,0)*(1/(T/3)),0)), axis=1)
....
Cmap[CC5,4,t] = np.stack(ExcInhID*np.ones([Ncells-1,1])*(min(max(t-T/3,0)*(1/(T/3)),0)), axis=1)