2017-10-13 18 views
-2

私のコードのどこかで2つの配列を掛け合わせると、その結果は以下のようになり、それ以上の操作はできません。どのようにしてアレイキーワードを削除する必要がありますか?私は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

im to new py。ここに更新があります – DragonKnight

答えて

0

私はコピー-N-ペーストを行なったし、きれいに表示得た:あなたは4のタプルを持って

((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,2)、(3,4)、(3,1)、および(3,2)が異なる。

()をさらに注意深く見てください。これは2要素タプルです。 1つの要素は3つの配列を持つタプルです。 2番目は配列です。

YALについて教えてください。特に彼らは何ですか?タプル?配列のタプル?オブジェクトdtype配列?このタプルを生成するオブジェクトnp.divideによって動作する可能性のあるオブジェクトを想像するのは難しいです。

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)、配列、およびルックスです:あなたの付加価値(私は,を追加する必要がありました)リストからアレイを作成

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' 


あなたの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(表現とrepr対照的にSTR)次のように異なる場合があります。

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

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューより](/レビュー/低品質の投稿/ 17614034) – Isma

+3

@lsma、私はここで何をしているのか分かります。 OPは構造に関する重要な手がかりではなく、「配列」が無関係なキーワードであると考えて、見ていることについて混乱しています。私が示したことは、コメントを書くには時間がかかりすぎます。コメントは定型化を保持しません。コメントと回答の違いを拾い読みするのではなく、助けに集中できます。 – 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

の値は正しいですが、シグモイド関数を計算するためにパラメータをベクトル化するときに、この入力フォームを受け入れないようです。これまでは問題はなかったが、この部分は間違っている。 – DragonKnight

+0

その形状を参照してください。それが形(n、1)であればそれを(n、)に、そしてその逆にして、それを入力として与えます。 –

+0

実際には、私は形状をn、1に保つ必要はありません。 2番目の次元を失うと、アプリケーション全体にバグが発生します。 – DragonKnight

関連する問題