私は個々の要素を1つの2D配列から別の次元配列にコピーしようとしています。私のコードは次の通りです:2つのnumpy 2次元配列の等価性をテストする
tp_matrix = np.array(tp_matrix)
my_array = np.empty(shape = (tp_matrix.shape))
for x in range(tp_matrix.shape[0]):
for y in range(tp_matrix.shape[1]):
my_array[x][y] = tp_matrix[x][y]
if(np.array_equal(my_array, tp_matrix)):
print('Equal')
else:
print('Not equal')
しかし、2つの配列は何らかの理由で等しくありません。ここでの問題は何ですか?私はそれを解決するために何ができますか?
num_pyのコピー機能を使用することはできません。これは後で、my_arrayの要素のいくつかに、あとでmy_matrixのものと同じ他の値で変更を加えたいからです。
編集:コードを実行すると、次のメッセージが表示されます。 FutureWarning:要素ごとの比較に失敗しました。代わりにスカラーを返しますが、将来は要素ごとの比較を実行します データセット(tp_matrix)に何か問題がありますか? TypeError:入力タイプにufunc 'isfinite'がサポートされておらず、入力がサポートされているタイプに強制的に強制的に変換されませんでした。キャストルール ''安全 '' データは浮動小数点数として格納されます。またそれは少し大きいです(399 x 5825)。
編集3:解決済み。私はPythonを再インストールする必要がありました。
要素は浮いていますか?浮動小数点数を比較すると、そのような効果があります。 https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.allclose.html#numpy.allcloseを試してください。一般的に、浮動小数点数が等しいかどうかをテストするべきではありません。 – JulienD
あなたの等価文に耐性を与えるために'numpy.allclose() 'を試してください。また、あなたのデータに関する情報(たぶんの例)とそれを使って何をしようとしているのかについては、「最高のコピー」を作成するソリューションがあるかもしれません。 – armatita
tp_matrixとして整数と浮動小数点のリストのリストを使用して、コードを実行すると "Equal"になります。使用しているtp_matrixとは何ですか? –