7

私はイディオムを使います

 size_x, size_y, size_z = some_array.shape

numpy 配列を扱うときはよくあります。問題の配列に型がある場合、Cythonでは同じことが機能しないようです。

 def someFunc(np.ndarray[np.float32_t, ndim=2] arr):
      sx, sy = arr.shape

次のようなコンパイルエラーが発生します

  Cannot convert 'npy_intp *' to Python object

これはおそらく、"shape" が C 配列に変換される (アクセスを高速化するため) ため、もはやタプルではありません。

Cythonでも何とかこのタプルを抽出することは可能でしょうか? (それともそのままにしておくべきsx, sy = arr.shape[0], arr.shape[1]ですか?)

4

1 に答える 1

4

これに対処する簡単な方法は次のようなものであるとあなたは正しいと思います:

cdef int sx, sy
sx = arr.shape[0]
sy = arr.shape[1]

これを行う別の方法を認識していません。これは、私が自分のコードで使用している規則です。

于 2012-11-06T02:25:11.097 に答える