我做了一個拷貝正膏,並得到了漂亮的顯示:
((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