4

私はPythonとnumpyを学んでおり、ダックタイピングのアイデアは初めてです。私は何か/誰かがnumpy配列を渡す必要がある関数を書いています。ダックタイピングを取り入れようとして、array_likesまたは1d/0d配列を必要な形状に変換するためのオプションとオプションを使用numpy.arrayするコードを記述しています。具体的には、配列またはスカラーのいずれかを受け入れることができる場合にオプションを使用します。スカラーは、配列、配列、リストなどとしてコーディングできます。copy=ndmin=ndmin=(p,p)int(1,)(1,1)[1]

したがって、これを処理するためS = numpy.array(S,copy=False,ndmin=2)に、適切な配列(可能な場合)を取得し、ndim必要に応じて形状をテストするようなものを使用しています。numpy.array()これをTry-Exceptブロックに埋め込む必要があることはわかっていますが、どのような種類の例外がスローされる可能性があるかについてのドキュメントが見つかりません。したがって、私は現在これを持っています:

# duck covariance matrix into a 2d matrix
try:
    S = numpy.array(S, ndmin = 2, copy=False)
except Exception as e:
    raise e

ここでキャッチしようとする特定の例外は何ですか?ありがとう。

4

2 に答える 2

3

array_likeオブジェクトを受け入れるものとして関数を文書化し、例外の処理を呼び出し元に任せます。

numpy.array()非常に寛容な関数であり、ほとんどすべての配列に変換されます。

于 2012-09-21T07:51:05.093 に答える
0

np.asarray代わりに、を使用して入力を配列に変換してみてください。入力がすでにNumpy配列である場合は、何もコピーしないことが保証されています。arrayサブクラスを受け取る予定の場合は、を使用してnp.asanyarrayください。

多くのNumpyインターフェースは、入力が1次元か2次元かを気にしないことに注意してください。たとえば、np.dot1次元と2次元の両方の入力で機能します。そのままにしておくのがおそらく最善です。そうすれば、スカラー乗法のようなものがうまく機能します。

于 2012-09-21T07:47:25.730 に答える