2014-11-05 3 views
0

나는 x = 2000에서 5000까지의 3000 단계의 진폭 곡선과 50000 단계의 x = 0에서 10000까지의 데이터 곡선을 가지고 있습니다. 이제 데이터를 정규화 (진폭 곡선을 곱함)하고 싶지만, 두 배열의 길이가 다르며 시작점이 다릅니다.Python 두 개의 다른 크기의 배열 곱하기

둘 중 하나의 크기를 조정하지 않고이 작업을 수행 할 수있는 방법이 있습니까? (진폭 범위를 벗어나는 모든 값은 0이 될 수 있습니다)

답변

0

당신은 아마 while 루프를 사용하고 각 배열에 대한 인덱스를 추적하기 만하면되므로리스트의 크기를 조정하지 않아도된다고했습니다. 범위의 끝 부분에 도달하면 루핑을 중지하십시오.

는 또한

>>> b = [2, 4, 6, 8] 
>>> c = [1, 3, 5, 7, 9] 
>>> map(lambda x : x[0]*x[1], zip(b, c[1:])) 
>>> [6, 20, 42, 72] 

처럼 뭔가를 우편 및지도 기능을 사용할 수 있습니다하지만 난 그게 뭔가 당신이 "수"확실하지 않다.

0

크기가 다른 두 개의 배열을 정규화 할 수 있지만 응용 프로그램에 적합한 것이 무엇인지 결정해야합니다.

예제 코드 : 나는 어떻게

a1 = [1,2,3,4] 
a2 = [20,30] 

내가 A2에 의해 A1의 값을 확장하려면 어떻게해야합니까? 지표에 의해

  • 페어, 폐기 여분 길이
  • 새로운 데이터 요소를 생성하는
  • 보간 값 (A2)에 고정 된 값 (A2)에
  • 패드 값 반면 패드의 길이 (A2)의 인덱스를 복사 할 길이에 추가

귀하의 데이터에 적합한 것은 무엇입니까?

0

행 및 열 레이블을 정의하는 방법에 영리한 사람이라면 팬더를 사용하면됩니다. 데이터 프레임을 곱하면 팬더는 열과 행 레이블이 일치하는 데이터를 정렬합니다. 레이블이 일치하지 않는 값은 NaN으로 설정됩니다. 다음 예를 고려하십시오.

# every other step 
df1 = pandas.DataFrame(
    data=np.arange(1, 10).reshape(3, 3), 
    columns=[1, 3, 5], 
    index=[0, 2, 4] 
) 
print(df1) 

    1 3 5 
0 1 2 3 
2 4 5 6 
4 7 8 9 

# every step 
df2 = pandas.DataFrame(
    data=np.arange(0, 25).reshape(5, 5), 
    columns=[1, 2, 3, 4, 5], 
    index=[0, 1, 2, 3, 4] 
) 

    1 2 3 4 5 
0 0 1 2 3 4 
1 5 6 7 8 9 
2 10 11 12 13 14 
3 15 16 17 18 19 
4 20 21 22 23 24 

print(df1 * df2) 

    1 2 3 4 5 
0 0 -- 4 -- 12 # <-- labels match 
1 -- -- -- -- -- 
2 40 -- 60 -- 84 # <-- labels match 
3 -- -- -- -- -- 
4 140 -- 176 -- 216 # <-- labels match 
# ^ ^ ^
# |  |  | 
관련 문제