Преобразование массива целых чисел - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть массив целых чисел из [0 .. 255].

Я бы хотел изменить массив так, чтобы в нем оставалось 256 чисел, но числа начинаются с 100 и доходят до 255. Это означает, что много целых будет повторяться (т.е. [100,100,101,101,102 ...])

Есть идеи, как мне это сделать? Извините, я знаю, что это, вероятно, простая проблема, но сейчас я действительно поражаюсь ...

Спасибо!

Примечание: решение, предоставленное в python, псевдокоде или javascript, было бы неплохо. =)

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Если вы точно знаете, какие числа вы хотите, зачем вам нужно модифицировать существующий массив, а не просто создать нужный вам массив?Фактический Python:

nums = [int(i*156.0/256+100) for i in range(256)]
2 голосов
/ 18 февраля 2012

Python:

RANGE_SIZE = 255-100
for index in range(256):
     array[index] = 100 + int( RANGE_SIZE * float(index) / 255.0 )

Проверка работоспособности:

  • при index = 0, массив [index] = 100 + 0 = 100
  • когда index =255, массив [index] = 100 + (255-100) = 255

Это линейная интерполяция.Умножение и деление по существу преобразуют диапазон индекса в линейное линейное изменение от 0,0 до 1,0.Это применяется как шкала к желаемой ширине диапазона значений и добавляется к минимальному значению.

0 голосов
/ 18 февраля 2012

Вот один из способов:

n = 256
nf = float(n - 1)
xs = range(n)
(min, max) = (100, 255)
[min + int(i / nf * (max - min)) for i in xs]

дает:

[100, 100, 101, 101, 102, 103, 103, 104, 104, 105, 106, 106, 107, 107, 108, 109, 109, 110, 110, 111, 112, 112, 113, 113, 114, 115, 115, 116, 117, 117, 118, 118, 119, 120, 120, 121, 121, 122, 123, 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 132, 133, 134, 134, 135, 135, 136, 137, 137, 138, 138, 139, 140, 140, 141, 141, 142, 143, 143, 144, 144, 145, 146, 146, 147, 148, 148, 149, 149, 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, 156, 157, 157, 158, 158, 159, 160, 160, 161, 162, 162, 163, 163, 164, 165, 165, 166, 166, 167, 168, 168, 169, 169, 170, 171, 171, 172, 172, 173, 174, 174, 175, 175, 176, 177, 177, 178, 179, 179, 180, 180, 181, 182, 182, 183, 183, 184, 185, 185, 186, 186, 187, 188, 188, 189, 189, 190, 191, 191, 192, 193, 193, 194, 194, 195, 196, 196, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, 203, 203, 204, 205, 205, 206, 206, 207, 208, 208, 209, 210, 210, 211, 211, 212, 213, 213, 214, 214, 215, 216, 216, 217, 217, 218, 219, 219, 220 , 220, 221, 222, 222, 223, 224, 224, 225, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 231, 232, 233, 233, 234, 234, 235 , 236, 236, 237, 237, 238, 239, 239, 240, 241, 241, 242, 242, 243, 244, 244, 245, 245, 246, 247, 247, 248, 248, 249, 250, 250 , 251, 251, 252, 253, 253, 254, 255]

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