Следующий код для копирования массива. NET в numpy массив работает в python 2.7.17, но больше не в python 3.7.7:
import clr, numpy
from System import Array, Int32, IntPtr
from System.Runtime.InteropServices import Marshal
n = 10
net_arr = Array.CreateInstance(Int32, n)
for i in range(0, n): net_arr[i] = i
np_arr = numpy.zeros([n], int)
np_ptr = IntPtr.__overloads__[int](np_arr.__array_interface__['data'][0])
Marshal.Copy(net_arr, 0, np_ptr, net_arr.Length)
print(np_arr)
# python2 output:
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# python3 output:
Traceback (most recent call last):
File "test.py", line 10, in <module>
np_ptr = IntPtr.__overloads__[int](np_arr.__array_interface__['data'][0])
TypeError: no constructor matches given arguments
Я знаю, что были некоторые изменения в python типах с 2 на 3, но поиск и игра с конструктором не помогли мне найти решение. Спасибо за любую помощь!