我做了一个拷贝正膏,并得到了漂亮的显示:
((array([[ 0.09649747, -1.8634927 ],
[-0.2773882 , -0.35475898],
[-0.08274148, -0.62700068],
[-0.04381817, -0.47721803]]),
array([[-1.31386475, 0.88462238, 0.88131804, 1.70957306],
[ 0.05003364, -0.40467741, -0.54535995, -1.54647732],
[ 0.98236743, -1.10106763, -1.18504653, -0.2056499 ]]),
array([[ 1.48614836],
[ 0.23671627],
[-1.02378514]])),
array([[-0.7129932 , 0.62524497],
[-0.16051336, -0.76883635],
[-0.23003072, 0.74505627]]))
你有4元组阵列。它们形状不同,(4,2),(3,4),(3,1)和a(3,2)。
仔细看看()。这是一个2元组元组。一个元素也是一个元组,它有3个数组。第二个是一个数组。
告诉我们关于Y
和AL
;特别是他们是什么?元组?数组的元组?对象dtype数组?很难想象这个对象可以通过np.divide
来执行,这会产生这个元组。
随着你的附加值(我不得不添加,
)从列表中
In [63]: L,Y,AL = 2, [[1, 0]], [[ 1.78862847, 0.43650985]]
In [64]: - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))
...
TypeError: unsupported operand type(s) for -: 'int' and 'list'
创建阵列:
In [65]: Y=np.array(Y); AL = np.array(AL)
In [66]: - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))
Out[66]: array([[-0.5590876 , 1.77465391]])
结果是(1,2)阵列,并且看上去没有什么比你的arr
。
有时海报会得到包含数组的数组。从头开始构建可能会非常棘手:
In [105]: np.array(arr)
...
ValueError: could not broadcast input array from shape (3,2) into shape (3)
这是一种错误的,我得到当我尝试numpy的功能,适用于该嵌套的元组。
甲创建对象阵列的更可靠的方法是:
In [106]: A = np.empty(2, object)
In [107]: A[:] = arr
In [108]: A
Out[108]:
array([ (array([[ 0.09649747, -1.8634927 ],
[-0.2773882 , -0.35475898],
[-0.08274148, -0.62700068],
[-0.04381817, -0.47721803]]), array([[-1.31386475, 0.88462238, 0.88131804, 1.70957306],
[ 0.05003364, -0.40467741, -0.54535995, -1.54647732],
[ 0.98236743, -1.10106763, -1.18504653, -0.2056499 ]]), array([[ 1.48614836],
[ 0.23671627],
[-1.02378514]])),
array([[-0.7129932 , 0.62524497],
[-0.16051336, -0.76883635],
[-0.23003072, 0.74505627]])], dtype=object)
并转动内的元组到一个数组,以及:
In [109]: A[0] = np.array(A[0])
In [110]: A
Out[110]:
array([ array([ array([[ 0.09649747, -1.8634927 ],
[-0.2773882 , -0.35475898],
[-0.08274148, -0.62700068],
[-0.04381817, -0.47721803]]),
array([[-1.31386475, 0.88462238, 0.88131804, 1.70957306],
[ 0.05003364, -0.40467741, -0.54535995, -1.54647732],
[ 0.98236743, -1.10106763, -1.18504653, -0.2056499 ]]),
array([[ 1.48614836],
[ 0.23671627],
[-1.02378514]])], dtype=object),
array([[-0.7129932 , 0.62524497],
[-0.16051336, -0.76883635],
[-0.23003072, 0.74505627]])], dtype=object)
的print
(str作为反对REPR表示)可能有所不同:
In [111]: print(A)
[ array([ array([[ 0.09649747, -1.8634927 ],
[-0.2773882 , -0.35475898],
[-0.08274148, -0.62700068],
[-0.04381817, -0.47721803]]),
array([[-1.31386475, 0.88462238, 0.88131804, 1.70957306],
[ 0.05003364, -0.40467741, -0.54535995, -1.54647732],
[ 0.98236743, -1.10106763, -1.18504653, -0.2056499 ]]),
array([[ 1.48614836],
[ 0.23671627],
[-1.02378514]])], dtype=object)
array([[-0.7129932 , 0.62524497],
[-0.16051336, -0.76883635],
[-0.23003072, 0.74505627]])]
事实上,你的样品有()
标记强烈表明它是元组,而不是列表或对象数组。
有时,数组的列表或元组可以变成一个'平坦的'数组,其中某些版本的concatenate
(hstack,vstack,stack),但这不是这种情况。
你可以使用生成此输出的代码进行更新吗? – PseudoAj
问题可能不是你所看到的“数组”关键字,而是你拥有数组元组的事实。 – Julien
即时通讯新的py。这里是更新 – DragonKnight