n * m 행렬 행의 가능한 모든 합계 목록을 얻는 방법

Aitbayev 잔디

I이있다 4x10( nX mCSV)에 데이터 매트릭스 :

1, 5, 19, 23, 7, 51, 18, 20, 35, 41
15, 34, 17, 8, 11, 93, 13, 46, 3, 10
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
10, 9, 8, 7, 6, 5, 4, 3, 2, 1

먼저 첫 번째 n/2에서 가능한 모든 합계 목록을 얻으려고합니다 . 나머지 마지막 n/2행으로도 똑같이합니다.

첫 번째 행의 가능한 모든 합계에서 다음을 의미합니다.

예 :
행 1 : 1, 2, 3
행 2 :3, 2, 1

가능한 모든 합계 목록 : 1 + [3, 2, 1]; 2 + [3, 2, 1];3 + [3, 2, 1]

최종 목록 : [4, 3, 2, 5, 4, 3, 6, 5, 4] (현재 중복을 제거하고 싶지 않습니다)

내 논리에는 다음 코드가 있습니다.

import csv

def loadCsv(filename):
    lines = csv.reader(open(filename, "rb"))
    dataset = list(lines)
    for i in range(len(dataset)):
        dataset[i] = [float(x) for x in dataset[i]]
    return dataset

data = loadCsv('btest2.txt')
divider = len(data)/2

firstPossibleSumsList = []
secondPossibleSumsList = []


#Possible sum list for the first n/2 rows:
for i in range(len(data[0])):
    for j in range(len(data[0])):
        firstPossibleSumsList.append(data[0][i] + data[1][j])

#Possible sum list for the last n/2 rows:
for i in range(len(data[0])):
    for j in range(len(data[0])):
        secondPossibleSumsList.append(data[2][i] + data[3][j])

문제는 data[0][i], data[1][i]을 사용하여 수동으로 행을 나눴다는 것 data[2][i]입니다. 더 효율적이고 divider변수 를 포함하여 하고 싶지만 방법을 알 수 없습니다. 내 코드에서는 integers에 의존 0, 1, 2, 3하지만 행렬 차원에 관계없이 행렬 행을 반으로 나누고 싶었습니다.

한 가지 옵션은 벡터와 전치 벡터의 합으로 생각하는 것입니다. 그런 다음 할 수 있습니다.

import numpy as np

data = np.array(loadCsv('btest2.txt'))

firstPossibleSumsArray = (data[0,:,np.newaxis] + data[1]).flatten()

#output for first two columns:
array([  15,   34,   17,    8,   11,   93,   13,   46,    3,   10,   75,
    170,   85,   40,   55,  465,   65,  230,   15,   50,  285,  646,
    323,  152,  209, 1767,  247,  874,   57,  190,  345,  782,  391,
    184,  253, 2139,  299, 1058,   69,  230,  105,  238,  119,   56,
     77,  651,   91,  322,   21,   70,  765, 1734,  867,  408,  561,
   4743,  663, 2346,  153,  510,  270,  612,  306,  144,  198, 1674,
    234,  828,   54,  180,  300,  680,  340,  160,  220, 1860,  260,
    920,   60,  200,  525, 1190,  595,  280,  385, 3255,  455, 1610,
    105,  350,  615, 1394,  697,  328,  451, 3813,  533, 1886,  123,
    410])

마지막 평면화는 필요하지 않은 배열에서 10x10배열 로 바꾸는 것입니다 100x1.

배열 사용의 단점은 데이터 크기 조정 / 추가와 관련하여 유연하지 않다는 것입니다.

편집하다:

전체 코드는 다음과 같을 수 있습니다.

div = int(data.shape[0])
row_len_squared = int(data.shape[1]**2)

firstPossibleSumsArray = np.empty( int((div*(div-1))/2 * row_len_squared), dtype=int )

idx = 0
for row in range(div):
    for col in range(row+1,div):
        firstPossibleSumsArray[idx:idx+row_len_squared] = \
            (data[row,:,np.newaxis] + data[col]).flatten()
        idx += row_len_squared
#reapeat process for second possible sums array by replacing the range 
#in the first loop from range(div) to range(div,2*div)            

이것은 각 행을 통과하여 행렬 절반의 나머지 행과 합산합니다 (행 # 1 + 행 # 2, ..., 행 # 1 + 행 #n, 행 # 2 + 행 # 3 등).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

길이 n 목록을 m 하위 목록으로 나누는 가능한 모든 조합을 얻는 방법

분류에서Dev

행렬의 가능한 모든 순열 행렬을 얻는 방법

분류에서Dev

R에서 가능한 모든 조합을 얻기 위해 행렬 M2의 각 행을 행렬 M1의 각 행에 "붙여 넣기"하는 효율적인 방법이 있습니까?

분류에서Dev

길이 M과 N의 목록이 주어지면 가능한 모든 쌍이있는 길이 M * N의 목록을 얻는 방법

분류에서Dev

Java : 행렬 목록에 정수 세트의 가능한 모든 조합을 배치하는 알고리즘

분류에서Dev

c보다 큰 목록의 가능한 모든 하위 집합을 계산하는 방법

분류에서Dev

R의 두 행렬에서 두 열의 가능한 모든 조합에 함수를 적용하는 방법

분류에서Dev

Matlab에서 행렬의 모든 X 행의 합을 찾는 방법

분류에서Dev

가능한 한 빨리 행렬 계산을하는 방법

분류에서Dev

R의 다중 선형 회귀 모델에서 가능한 모든 조합을 실행하는 방법

분류에서Dev

R에서 행렬의 각 행에 대한 가중 합계를 얻는 방법

분류에서Dev

R에서 행렬의 가능한 모든 순열을 찾는 방법은 무엇입니까?

분류에서Dev

원래 행렬의 모든 셀에 대한 행 번호가있는 행렬을 얻는 방법은 무엇입니까?

분류에서Dev

MATLAB에서 행렬의 열 벡터에 대해 가능한 모든 조합을 생성하는 방법은 무엇입니까?

분류에서Dev

행렬의 모든 행을 추가하는 방법은 무엇입니까?

분류에서Dev

두 파이썬 클래스 인스턴스 간의 합계를 수행하고 모든 인스턴스 변수의 길이 목록을 가져 오는 방법

분류에서Dev

크기가 다른 여러 벡터 / 행렬의 가능한 모든 조합을 계산하고 동시에 열을 합산하는 방법은 무엇입니까?

분류에서Dev

m * n 크기의 행렬로 모든 요소 조합을 인쇄합니다.

분류에서Dev

가능한 모든 조합으로 사전의 목록에있는 문자열을 바꾸는 방법

분류에서Dev

Postgres에서 조건을 충족하는 모든 행의 합계를 얻는 방법

분류에서Dev

SQL에서 모든 n 번째 행 값을 얻는 방법

분류에서Dev

제약 조건이있는 이진 행렬의 가능한 모든 조합

분류에서Dev

가능한 모든 조합으로 목록을 만드는 방법

분류에서Dev

R : 2 개 항목의 모든 조합이있는 n 개 열의 행렬

분류에서Dev

Java에서 N 개의 가능한 요소 (M> N)와 함께 배열 목록 (모두 길이 M)을 생성하는 방법은 무엇입니까?

분류에서Dev

거리 대신 합계 행렬을 얻는 방법

분류에서Dev

각 행의 모든 행을 합하는 방법

분류에서Dev

모든 항목의 합계를 얻는 방법?

분류에서Dev

R의 데이터 프레임 내에서 가능한 모든 행 조합에 여러 기능을 적용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    길이 n 목록을 m 하위 목록으로 나누는 가능한 모든 조합을 얻는 방법

  2. 2

    행렬의 가능한 모든 순열 행렬을 얻는 방법

  3. 3

    R에서 가능한 모든 조합을 얻기 위해 행렬 M2의 각 행을 행렬 M1의 각 행에 "붙여 넣기"하는 효율적인 방법이 있습니까?

  4. 4

    길이 M과 N의 목록이 주어지면 가능한 모든 쌍이있는 길이 M * N의 목록을 얻는 방법

  5. 5

    Java : 행렬 목록에 정수 세트의 가능한 모든 조합을 배치하는 알고리즘

  6. 6

    c보다 큰 목록의 가능한 모든 하위 집합을 계산하는 방법

  7. 7

    R의 두 행렬에서 두 열의 가능한 모든 조합에 함수를 적용하는 방법

  8. 8

    Matlab에서 행렬의 모든 X 행의 합을 찾는 방법

  9. 9

    가능한 한 빨리 행렬 계산을하는 방법

  10. 10

    R의 다중 선형 회귀 모델에서 가능한 모든 조합을 실행하는 방법

  11. 11

    R에서 행렬의 각 행에 대한 가중 합계를 얻는 방법

  12. 12

    R에서 행렬의 가능한 모든 순열을 찾는 방법은 무엇입니까?

  13. 13

    원래 행렬의 모든 셀에 대한 행 번호가있는 행렬을 얻는 방법은 무엇입니까?

  14. 14

    MATLAB에서 행렬의 열 벡터에 대해 가능한 모든 조합을 생성하는 방법은 무엇입니까?

  15. 15

    행렬의 모든 행을 추가하는 방법은 무엇입니까?

  16. 16

    두 파이썬 클래스 인스턴스 간의 합계를 수행하고 모든 인스턴스 변수의 길이 목록을 가져 오는 방법

  17. 17

    크기가 다른 여러 벡터 / 행렬의 가능한 모든 조합을 계산하고 동시에 열을 합산하는 방법은 무엇입니까?

  18. 18

    m * n 크기의 행렬로 모든 요소 조합을 인쇄합니다.

  19. 19

    가능한 모든 조합으로 사전의 목록에있는 문자열을 바꾸는 방법

  20. 20

    Postgres에서 조건을 충족하는 모든 행의 합계를 얻는 방법

  21. 21

    SQL에서 모든 n 번째 행 값을 얻는 방법

  22. 22

    제약 조건이있는 이진 행렬의 가능한 모든 조합

  23. 23

    가능한 모든 조합으로 목록을 만드는 방법

  24. 24

    R : 2 개 항목의 모든 조합이있는 n 개 열의 행렬

  25. 25

    Java에서 N 개의 가능한 요소 (M> N)와 함께 배열 목록 (모두 길이 M)을 생성하는 방법은 무엇입니까?

  26. 26

    거리 대신 합계 행렬을 얻는 방법

  27. 27

    각 행의 모든 행을 합하는 방법

  28. 28

    모든 항목의 합계를 얻는 방법?

  29. 29

    R의 데이터 프레임 내에서 가능한 모든 행 조합에 여러 기능을 적용하는 방법은 무엇입니까?

뜨겁다태그

보관