2017-10-13 93 views
-2

在我的代碼中,我將兩個數組相乘的地方,結果如下,我無法對其執行任何更多操作。我應該如何刪除array這樣的關鍵字?我是python的新手,這是我的代碼中唯一的一部分,我看到這個關鍵的工作。順便說一句,代碼是在Coursera py編輯器中創建一個深度神經網絡,我無法從這部分代碼中繼續。如何刪除python數組中的數組關鍵字?

(我會提供更多的代碼和澄清今晚。)

L,Y,AL = 2 ,[[1 0]] ,[[ 1.78862847 0.43650985]] 
arr = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL)) 
>>>((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]])) 
+0

你可以使用生成此輸出的代碼進行更新嗎? – PseudoAj

+0

問題可能不是你所看到的「數組」關鍵字,而是你擁有數組元組的事實。 – Julien

+0

即時通訊新的py。這裏是更新 – DragonKnight

回答

0

我做了一個拷貝正膏,並得到了漂亮的顯示:

((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個數組。第二個是一個數組。

告訴我們關於YAL;特別是他們是什麼?元組?數組的元組?對象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),但這不是這種情況。

+0

問題已更新。 – DragonKnight

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/17614034) – Isma

+3

@lsma,我知道我在這裏做什麼。 OP對他看到的內容感到困惑,認爲'array'是一個無關的關鍵字,而不是關於結構的重要線索。我展示的內容太長,無法發表評論。此外,評論不保存格式。讓我們專注於幫助,而不是挑剔的評論和答案之間的差異。 – hpaulj

0

將結果轉換爲列表。例如,

a = [1, 2, 3] 
b = [4, 5, 6] 
np.add(a,b) 

這將返回數組([5,7,9])。但是,

a = [1, 2, 3] 
b = [4, 5, 6] 
list(np.add(a,b)) 

回報,

[5,7,9]。

但是,由於array關鍵字的存在,您不太可能面臨錯誤。這只是一種表示。檢查你的元組大小和尺寸,因爲這是故障通常的地方。

+0

值是正確的,它似乎當我矢量化參數來計算sigmoid函數,它不接受這種形式的輸入。到目前爲止,我還沒有問題,但這一部分正在犯錯誤。 – DragonKnight

+0

看到它的形狀。如果它的形式(n,1)重塑爲(n,),反之亦然,然後將其作爲輸入饋送。 –

+0

實際上我不得不將形狀保持爲n,1。失去第二個維度會在整個應用程序中造成bug。 – DragonKnight