Могу ли я статически ввести массив h5file в Cython?

Я разрабатываю библиотеку, которая использует Cython на низком уровне для решения проблем с потоками в 2D-массивах. Если эти массивы представляют собой массивы numpy, я могу статически ввести их, что позволит избежать накладных расходов интерпретатора Python на произвольный доступ к этим массивам. Чтобы обрабатывать массивы настолько больших размеров, что они не помещаются в памяти, я планирую использовать массивы hd5file из pytables вместо numpy, но я не могу понять, можно ли статически ввести CArray.

Можно ли статически ввести CArray hd5file в Cython, чтобы избежать накладных расходов интерпретатора Python при случайном доступе к этим массивам?


person Rich    schedule 20.12.2013    source источник


Ответы (1)


Если вы используете пакет h5py, вы можете использовать numpy.asarray() для наборов данных, которые он вам дает, тогда у вас есть более знакомый массив NumPy, с которым вы уже знаете, как работать.

Обратите внимание, что пару лет назад в h5py была ошибка, связанная с этим, которая приводила к катастрофически низкой производительности при выполнении asarray(), но она была решена, поэтому, пожалуйста, не используйте очень старую версию, если вы собираетесь попробовать это.

person John Zwinck    schedule 21.12.2013