行列が要素であるコンテナの、要素の除去の操作
初めて質問いたします。初心者ですがよろしくお願いいたします。
(行いたい操作)
まず、リストにnumpyで生成した行列を入れて、そのリストをfor文のコンテナとします。そして繰り返し処理でリストから取り出され変数に代入されている行列自身とは異なる行列(位置が異なれば行列の要素が一致しても構わない)をリストから一つランダム抽出して、その2つを表示するという操作をしたいです。
リストにはすべての要素が同じ行列が含まれても構いません(つまり1回の処理ごとに表示される2つの行列が同じでも構いません)。「今、リストから取り出されてfor文の変数に代入されている行列と同じ行列」を元のリストから一つ除いたリストから要素(行列)をランダムに一つ取り出すという操作をしたいのです。
以下、私の書いたコードなのですが、
import numpy as np
import random
import copy
a=np.zeros((2,2))
b=np.ones((2,2))
c=np.array([[2.,2.],[2.,2.]])
d=np.array([[3.,3.],[3.,3.]])
e=np.zeros((2,2))
f=[a,b,c,d,e]
for i in f:
g=copy.copy(f)
g.remove(i)
h=random.choice(g)
print(i,h)
「今、for文の変数iに代入されている行列」を元のリスト(f)から除いたリスト(g)を作りたくて
g.remove(i) としたのですが、
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
とエラーが出てしまいます。行列の要素の比較のエラーだと思うのですが、要素としての行列をコンテナから削除するという方法がわかりません。要素が全て一致する行列が複数存在してもそのうち一つの行列だけリストから除けられればいいです。勉強を初めて日が浅いため稚拙なコードでございますが、何卒ご教示お願いいたします。