Потеря данных в numpy векторизация - PullRequest
0 голосов
/ 06 апреля 2020

Учитывая приведенный ниже код:

   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 попробует код один раз, прежде чем сделает векторизацию. Я пытался использовать один флаг, но не работает. Как обойти это?

Спасибо,

Луис Гонсалвеш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...