Как нормализовать массив NumPy к в определенном диапазоне?

Вы не определяете, отлаживаете ли Вы собственный или управляемый код. Это не влияет на ответ, WinDbg чрезвычайно полезен для обоих, но многие люди полагают, что WinDbg так или иначе менее релевантен при отладке приложений.NET. Не так. В качестве награды можно узнать много о том, как платформа.NET работает путем отладки приложения.NET в WinDbg с расширением SOS. Увеличенный (или присоединение к) Ваше приложение.NET в WinDbg и типе...

.loadby sos mscorwks

..., чтобы быть уверенным, что Вы загружаете правильное расширение для версии используемого CLR. Тогда введите...

!help

... для наблюдения, какие команды доступны в расширении SOS.

я услышал, что это шутило, что Microsoft только имеет один инструмент разработчика, и это - WinDbg. Все, что Вы могли возможно хотеть для отладки, там, или в расширении. Несомненно, подмножество тех вещей также доступны в VS с более дружественным UI...:-)

116
задан Ashwin Nanjappa 20 August 2013 в 04:48
поделиться

2 ответа

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')
125
ответ дан 24 November 2019 в 02:15
поделиться

Вы можете использовать версию "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()
11
ответ дан 24 November 2019 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: