gpt4 book ai didi

python - 制作具有相似维度的二维数组时出现意外行为

转载 作者:行者123 更新时间:2023-11-28 17:43:27 26 4
gpt4 key购买 nike

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 可以替换为返回给定形状的矩阵的任何其他矩阵函数

下面的输出是我所期望的(并得到):

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)

但是对于 a!=bb==c 形式的输入,情况就完全不同了

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)

这对我来说是一个很难找到的错误,仔细一想,我觉得跟广播系统有关系。

我想解释一下是怎么回事。 (脑子里有个模糊的概念)


作为引用,我制作数组数组的原因是为了减法:
wArray=wArray-dWs
更易读wList=[w-dW, (w,dW) in zip(wList,dWs)]

最佳答案

简单地打印出数组应该可以让您很快看到发生了什么。

关于最后一个维度去哪里的问题。由于该维度的大小具有可变长度。 Numpy 不会为它创建一个新的维度,它只会创建一个不同长度的对象数组(其中对象是一个列表)。

showArrayOfList(2,4,4) 情况下,您的数组如下所示:

第一行:
[数组([0., 0.])数组([0.,0.])数组([0.,0.])数组([0.,0.])]

第二至第四行:
[数组([ 0., 0., 0., 0.]) 数组([ 0., 0., 0., 0.])
数组([ 0., 0., 0., 0.]) 数组([ 0., 0., 0., 0.])]

关于python - 制作具有相似维度的二维数组时出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com