Nieoczekiwane zachowanie podczas tworzenia tablicy tablic 2D o podobnym wymiarze

MWE:

def showArrayOfList(a,b,c):
    wlist = [np.zeros((szNext,szThis)) for (szThis,szNext) in [(a,b),(b,b),(b,b),(b,c)]]

    print "wlist:", map(np.shape,wlist)

    wArray = np.asarray(wlist)
    print "wArray:", map(np.shape,wArray)
    print "shape wArray:", shape(wArray)

np.zeros można zastąpić każdą inną funkcję macierzy, która zwraca macierz o danym kształcie

Oczekiwałem (i otrzymuję) wyników z poniższego:

In[1]: ShowArrayOfList(1,4,5)
Out[1]: wlist: [(4, 1), (4, 4), (4, 4), (5, 4)]
wArray: [(4, 1), (4, 4), (4, 4), (5, 4)]
shape wArray: (4,) #An array of 4 references(?), to arrays of various sizes

In[2]: ShowArrayOfList(5,5,5)
Out[2]: wlist: [(5, 5), (5, 5), (5, 5), (5, 5)]
wArray: [(5, 5), (5, 5), (5, 5), (5, 5)]
shape wArray: (4, 5, 5) #4 arrays of shape (5,5)

Ale do wprowadzania formularzaa!=b ib==c rzeczy są zupełnie inne

Int[3]: showArrayOfList(6,5,5)
Out[3]: wlist: [(5, 6), (5, 5), (5, 5), (5, 5)]
wArray: [(5,), (5,), (5,), (5,)] #Where did my second Dimension Go?
shape wArray: (4, 5)


Int[4]: showArrayOfList(2,4,4)
Out[4]:
wlist: [(4, 2), (4, 4), (4, 4), (4, 4)]
wArray: [(4,), (4,), (4,), (4,)] #Where did my second Dimension Go?
shape wArray: (4, 4)

To sprawia, że ​​bardzo trudno jest znaleźć dla mnie błąd. Myślę, że ma to coś wspólnego z systemem nadawania.

Chciałbym, co się dzieje, wyjaśniłem. (Mam w głowie niewyraźne pojęcie)

Dla odniesienia powód, dla którego tworzę tablicę tablic, jest do odejmowania:
wArray=wArray-dWs jest o wiele bardziej czytelny niż niż
wList=[w-dW, (w,dW) in zip(wList,dWs)]

questionAnswers(2)

yourAnswerToTheQuestion