【问题标题】:Shape mismatch Python形状不匹配 Python
【发布时间】:2019-06-10 11:31:23
【问题描述】:

所以我正在尝试使用我自己定义的一些标准值创建一个 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)))

我什么都试过了,不知道该怎么办了.. 大家有什么建议吗?

【问题讨论】:

    标签: python valueerror


    【解决方案1】:

    我不完全确定为什么您在第一个实例中没有出错,而只在第二个实例中出错。但是,如果您按以下方式更改线路,一切都会奏效。

    来自

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2019-03-05
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多