レッツを使用してnumpyの配列を作成します。私は2つのnumpyのアレイarr1
とarr2
を持っていると言う:リスト内包に
arr1 = np.random.randint(3, size = 100)
arr2 = np.random.randint(3, size = 100)
私は共同出現数を含むマトリックスを構築したいと思います。 つまり、arr1
のすべての値が0である場合、同じ位置にあるarr2
の要素も0であることがわかります。 p(0,0)
がarr2
にarr1
と0で0で出現回数を表します
M = [[p(0,0), p(0,1), p(0,2)],
[p(1,0), p(1,1), p(1,2)],
[p(2,0), p(2,1), p(2,2)]]
:だから、私は次の行列を取得したいと思います。
最初の試行:私は次のことを試してみました最初の試みとして
:
[[sum(arr1[arr2 == y] == x) for x in np.arange(0,3)] for y in np.arange(0,3)]
しかし、Pythonは、次のエラーがスローされます。
NameError: name 'arr1' is not defined
第二の試み:
私はforループを使用することによって、このエラーを掘り下げることを試みた。この場合、Pythonは、前のエラーをスローしませんが、代わりに3×3アレイを得るための、私は1x9の配列を取得
M = np.array([])
for x in np.arange(0,dim):
result = np.array([])
for y in np.arange(0,dim):
result_temp = sum(arr1[arr2 == x] == y)
result = np.append(result, result_temp)
M = np.append(M,result)
、および私は希望の3x3配列を得ることができません。
ありがとうございます。
ありがとう!私は 'arr1'を定義しましたが、まだエラーを投げますので、私はあなたの2番目の解決策を使用するつもりです。私はなぜなのか理解していない。 –