Большая часть NumPy находится на C, но большая часть кода C является «образцом» для обработки всех «грязных» деталей интерфейса Python / C. Я думаю, что отношение C к Python составляет около 50/50 АТМ для NumPy.
Я не слишком знаком с низкоуровневыми деталями на основе vm, но считаю, что стоимость интерфейса будет выше из-за ограничений, наложенных на jvm и .clr. Одной из причин того, почему numpy часто быстрее аналогичных сред, является представление памяти и то, как массивы распределяются / передаются между функциями. В то время как большинство сред (Matlab и R, как я полагаю) используют Copy-On-Write для передачи массивов между функциями, NumPy использует ссылки. Но делать это, например, в JVM будет сложной (из-за ограничений на использование указателя и т. д.). Это выполнимо (существует ранний порт NumPy для Jython), но я не знаю, как они решают эту проблему. Может быть, C ++ / Cli сделает это проще, но у меня нет опыта работы с этой средой.