numpy 配列を操作するために C++ で Python 拡張機能を作成しました。メモリの問題があります。
拡張機能を呼び出す前に、値が 0 より大きい 3D numpy 配列があります。拡張機能に入ると、次の関数を使用して numpy 配列を取得します。
PyArrayObject * myArray = NULL;
if (!PyArg_ParseTuple(args, "O!",
&PyArray_Type,&myArray)) return NULL;
「 !O 」を使用すると、numpy 配列に直接アクセスできるように、python への参照を借用する必要があります。
次に、データにアクセスします。
float * myData = (float *) myArray->data;
int nbFrames = array -> dimensions[0];
int nbRows = array -> dimensions[1];
int nbCols = array -> dimensions[2];
後で、myArray に存在する値がまだ正であることを確認します。
for(int i = 0 ; i < nbFrames; i ++){
for( int j = 0 ; j < nbRows; j ++){
for(int k = 0 ; k < nbCols; k++){
if( myData[ i * nbCols * nbRows + j * nbCols + k ] < 0){
perror("Value < 0\n");
exit(1);
}
}
}
}
そして、値が < 0 の場合に遭遇するたびに、それは「-0.0000」ではなく、「-19.73」です。
では、この種の問題にすでに遭遇した人はいますか、それともどこから来て、どのように解決するかを知っている人はいますか?