[解決済み] 変数がNoneかnumpy.arrayか確認する際にValueErrorが発生する。
2022-05-06 13:51:17
質問
変数がNoneかnumpy.arrayかをチェックしたい。私が実装したのは
check_a
という関数があります。
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
しかし、このコードではValueErrorが発生します。真っ当な方法は何でしょうか?
ValueError Traceback (most recent call last)
<ipython-input-41-0201c81c185e> in <module>()
6 check_a(a)
7 a = np.array([1,2])
----> 8 check_a(a)
<ipython-input-41-0201c81c185e> in check_a(a)
1 def check_a(a):
----> 2 if not a:
3 print "please initialize a"
4
5 a = None
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解決方法は?
使用方法
not a
をテストするために
a
は
None
の他の可能な値を仮定しています。
a
の真理値を持っています。
True
. しかし、NumPy の配列のほとんどは、真理値を全く持たない。
not
を適用することはできません。
あるオブジェクトが
None
最も一般的で信頼性の高い方法は、文字どおり
is
に対するチェック
None
:
if a is None:
...
else:
...
これは、オブジェクトが真理値を持つことに依存しないので、NumPyの配列で動作します。
なお、このテストは
is
ではなく
==
.
is
はオブジェクトIDテストです。
==
NumPy の配列は、ブロードキャストされた要素ごとの等価比較で、ブール値の配列を生成すると言っています。
>>> a = numpy.arange(5)
>>> a == None
array([False, False, False, False, False])
>>> if a == None:
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()
一方、あるオブジェクトがNumPyの配列であるかどうかをテストしたい場合、その型をテストすることができます。
# Careful - the type is np.ndarray, not np.array. np.array is a factory function.
if type(a) is np.ndarray:
...
else:
...
を使用することもできます。
isinstance
を返しますが、これも
True
は、その型のサブクラスに対して(それが望まれているのであれば)。がいかにひどいもので、互換性がないかを考えると
np.matrix
は、実際には必要ないかもしれません。
# Again, ndarray, not array, because array is a factory function.
if isinstance(a, np.ndarray):
...
else:
...
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] 環境変数の値にアクセスする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python カメの描画コマンドとその例
-
Pythonによるjieba分割ライブラリ
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない