Учитывая приведенный ниже код:
def myfunc5(x):
f.read(12)
data[3*x] = np.asarray(struct.unpack('fff', f.read(12)))
data[3*x+1] = np.asarray(struct.unpack('fff', f.read(12)))
data[3*x+2] = np.asarray(struct.unpack('fff', f.read(12)))
f.read(2)
global f
f = open('carolina.stl', 'rb')
f.read(80)
size1=np.asarray(struct.unpack('I', f.read(4)))
PointsS=(size1[0])*3
global data
data=np.full((PointsS,3),np.float32(0.0))
vfunc5 = np.vectorize(myfunc5)
vfunc5(range(size1[0]))
f.close()
Я обнаружил, что myfunc5 запускается два раза при x = 0, а приведенный выше код доходит до конца файла раньше, чем требуется, и выдает ошибку. Я предполагаю, что np.vectorize попробует код один раз, прежде чем сделает векторизацию. Я пытался использовать один флаг, но не работает. Как обойти это?
Спасибо,
Луис Гонсалвеш