2013-03-05 2 views
2

я следующие данныеPython: Производят приращения из списка формирования массива

a= [1 1.1 1.2 1.3 1.4 1.5] 

То, что я хочу сделать, это для каждого значения этих данных производит ряд точек с шагом с шагом 10 %. Создание нового массива:

b= [[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0], [0 0.11 ... 1.1],.....] 

Следующая вещь, которую я хочу сделать это, это принять каждый номер из списка 1 и определить количество приращений (интервал 20%) от другого значения, например, 2, чтобы получить другой массив:

c=[[1 1.2 1.4. 1.6 1.8 2.0], [1.1 ..... 2.0],......] 

Затем я хочу объединить эти массивы:

d =[[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1 1.2 1.4. 1.6 1.8 2.0], [0 0.11 ... 2.0],.....] 

Список 1 определяется из уравнения, но я хочу сделать дальнейшие вычисления до определенного момента в этом случае значение равно 2.

Будет ли что-то работать или каким-либо другим способом генерировать последовательность чисел? Возможно ли это?

+0

Имейте в виду, что 'х .1', 'x.2',' x.3', 'x.4',' x.6', 'x.7',' x.8', 'x.9' не могут быть представлены точно как плавает. –

ответ

1

смесительные списочные и np.linspace это довольно просто:

>>> a = [1, 1.1, 1.2, 1.3, 1.4, 1.5] 

>>> b = [np.linspace(0, j, 11) for j in a] 
>>> b 
[array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]), 
array([ 0. , 0.11, 0.22, 0.33, 0.44, 0.55, 0.66, 0.77, 0.88, 0.99, 
     1.1 ]), 
... 
array([ 0. , 0.15, 0.3 , 0.45, 0.6 , 0.75, 0.9 , 1.05, 1.2 , 1.35, 
     1.5 ])] 

>>> c = [np.linspace(j, 2, 6) for j in a] 
>>> c 
[array([ 1. , 1.2, 1.4, 1.6, 1.8, 2. ]), 
array([ 1.1 , 1.28, 1.46, 1.64, 1.82, 2. ]), 
... 
array([ 1.5, 1.6, 1.7, 1.8, 1.9, 2. ])] 

Объединяем их необходимо либо удалить первый элемент каждого массива в c или последний из каждого массива в b. Если вам нужно только конкатенации, я бы предложил сохранить c, как указано выше, и делает:

>>> b = [np.linspace(0, j, 10, endpoint=False) for j in a] 

>>> d = map(np.concatenate, zip(b, c)) 
>>> d 
[array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 
     1.2, 1.4, 1.6, 1.8, 2. ]), 
array([ 0. , 0.11, 0.22, 0.33, 0.44, 0.55, 0.66, 0.77, 0.88, 
     0.99, 1.1 , 1.28, 1.46, 1.64, 1.82, 2. ]), 
... 
array([ 0. , 0.15, 0.3 , 0.45, 0.6 , 0.75, 0.9 , 1.05, 1.2 , 
     1.35, 1.5 , 1.6 , 1.7 , 1.8 , 1.9 , 2. ])] 

Если вы хотите списки вместо Numpy массивов вы всегда можете сделать окончательный

>>> d = map(list, d) 
Смежные вопросы