Вы не определяете, отлаживаете ли Вы собственный или управляемый код. Это не влияет на ответ, WinDbg чрезвычайно полезен для обоих, но многие люди полагают, что WinDbg так или иначе менее релевантен при отладке приложений.NET. Не так. В качестве награды можно узнать много о том, как платформа.NET работает путем отладки приложения.NET в WinDbg с расширением SOS. Увеличенный (или присоединение к) Ваше приложение.NET в WinDbg и типе...
.loadby sos mscorwks
..., чтобы быть уверенным, что Вы загружаете правильное расширение для версии используемого CLR. Тогда введите...
!help
... для наблюдения, какие команды доступны в расширении SOS.
я услышал, что это шутило, что Microsoft только имеет один инструмент разработчика, и это - WinDbg. Все, что Вы могли возможно хотеть для отладки, там, или в расширении. Несомненно, подмножество тех вещей также доступны в VS с более дружественным UI...:-)
audio /= np.max(np.abs(audio),axis=0)
image *= (255.0/image.max())
Использование / =
и * =
позволяет вам удалить промежуточный временный массив, тем самым сэкономив часть памяти. Умножение менее затратно, чем деление, поэтому
image *= 255.0/image.max() # Uses 1 division and image.size multiplications
немного быстрее, чем
image /= image.max()/255.0 # Uses 1+image.size divisions
Поскольку мы используем здесь базовые методы numpy, я думаю, что это настолько же эффективное решение в numpy, насколько это возможно.
Операции на месте делают не изменять dtype массива контейнера. Поскольку желаемые нормализованные значения являются числами с плавающей запятой, массивы audio
и image
должны иметь dtype с плавающей запятой перед выполнением операций на месте.
Если они еще не имеют dtype с плавающей запятой, вам нужно преобразовать их, используя astype
. Например,
image = image.astype('float64')
Вы можете использовать версию "i" (как в idiv, imul ..), и это выглядит неплохо:
image /= (image.max()/255.0)
В другом случае вы можете написать функцию для нормализовать n-мерный массив по столбцам:
def normalize_columns(arr):
rows, cols = arr.shape
for col in xrange(cols):
arr[:,col] /= abs(arr[:,col]).max()