2013-02-06 2 views
0

다음 코드가 있습니다. 한 번에 두 행을 가져 와서이 함수에 넣으려는 행렬이 있습니다. 나는 intertools를 훑어 보았습니다.하지만이 인스턴스에서 작동하는지 확실하지 않았습니다. 나는 islice를 시도했지만, 내가 원하는 출력을주지 못했다. 나는 '메소드'에 위치 인수를 주어야한다는 것을 알고 있지만,이 코드는 결과를 줄 것이기 때문에 그 코드를 남겨 두었습니다. 그들은 같은 최소, 최대 및 같은 반복됩니다. 내가 시도한 것은 색인 오류에 관한 문제와 색인이 붙지 않는 객체에 대한 문제였다. 나는 Python을 처음 사용하고 일부 책을 통해 작업하고 있지만 직접적으로 다루지는 않습니다. 나는 어떤 사람들이 stackoverflow에서 찾고있는 것을 살펴 봤지만, 주로 numpy ndarrays가 아니라 한 번에 2 줄씩 파일을 읽길 원합니다. 모든 제안을 부탁드립니다.함수에 numpy ndarray 사용

import numpy as np 

def xmax(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+1:2]) 
     if setOne[i][0:1] > setTwo[i][0:1]: 
      xMax = setOne[i][0:1] 
     else: 
      xMax = setTwo[i][0:1] 
     return(xMax) 

def xmin(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+1:2]) 
     if setOne[i][0:1] < setTwo[i][0:1]: 
      xMin = setOne[i][0:1] 
     else: 
      xMin = setTwo[i][0:1] 
     return(xMin) 

def ymax(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+1:2]) 
     if setOne[i][1:2] > setTwo[i][1:2]: 
      yMax = setOne[i][1:2] 
     else: 
      yMax = setTwo[i][1:2] 
     return(yMax) 

def ymin(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+1:2]) 
     if setOne[i][1:2] < setTwo[i][1:2]: 
      yMin = setOne[i][1:2] 
     else: 
      yMin = setTwo[i][1:2] 
     return(yMin) 

def zmax(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+2:3]) 
     if setOne[i][2:3] > setTwo[i][2:3]: 
      zMax = setOne[i][2:3] 
     else: 
      zMax = setTwo[i][2:3] 
     return(zMax) 

def zmin(): 
    for i in range(1): 
     setOne = (matrix[i:1]) 
     setTwo = (matrix[i+2:3]) 
     if setOne[i][2:3] < setTwo[i][2:3]: 
      zMin = setOne[i][2:3] 
     else: 
      zMin = setTwo[i][2:3] 
     return(zMin) 

'''*********************************************************************************** 
Created on Jan 27, 2013 

@author: 
***********************************************************************************''' 

f ='/Users/Documents/workspace/findMinMax/crapc.txt' 
x,y,z = np.loadtxt(f, unpack=True, usecols=(1,2,3), ndmin = 2) 

maxZ = max(z) 
minZ = min(z) 
print("Maximum Z value: " + str(maxZ)) 
print("Minimum Z value: " + str(minZ)) 
matrix = [x,y,z] 
matrix = np.rot90(matrix) 
matrix = matrix[::-1] 




"""for each_row in range(0,len(matrix)-1,2): 
     print("Xmax:" + str(xmax())) 
     print("Xmin:" + str(xmin())) 
     print("Ymax:" + str(ymax())) 
     print("Ymin:" + str(ymin())) 
     print("Zmax:" + str(zmax())) 
     print("Zmin:" + str(zmin()))""" 
+0

1) 정확히 달성하려는 것은 무엇입니까? 2) 'range (1)'에 대한 루프는 단일 값인 0 만 포함합니다. –

+0

실제로 무엇을하려고하는지 명확하지 않습니다. numpy ndarray의 최소 또는 최대 값을 원하면 ['min'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.amin.html#numpy.amin) 및 ['max'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.amax.html#numpy.amax) 함수, 즉'numpy.max (z)'또는'z. max()'. 이 문서는'axis' 키워드를 사용하여 각 열 또는 행을 최대한 활용할 수있는 방법을 보여줍니다. – Tim

답변

1

(당신이 여기에 제공 한 것은 독립 예가 아니다) 당신이하고있는 나는 코드의 구조를 이해하지 못하는 것을 내게 분명하지 않다,하지만 코드의 색인이다 잘못이 아니 어떻게 python/numpy 작동합니다.

범위 vec [a : b]는 vec에서 색인 a에서 색인 b-1까지 끝나는 b-a 요소 (b-a + 1이 아님)를 사용합니다. 인덱스 b에 요소를 포함한다고 가정하는 것 같습니다. 그렇지 않습니다.

+0

numpy.max()에 대한 설명서를 확실히 볼 것입니다. 나는 정규 맥을 시도했지만, 당신도 알다시피, 작동하지 않는다. 전체 열의 최소 및 최대 값을 찾는 문제는 한 번에 최소 및 최대 두 행을 찾고 싶다는 것입니다. 내 ndarray에는 31 개의 행이 있으며 상위 2 개 행의 최대 값과 최소값을 찾은 다음 두 번째 행으로 이동합니다 (이전 두 번째 행을 사용). 예를 들어, 행 1과 2의 최소값과 최대 값을 찾고 싶습니다. 그런 다음 2와 3을 입력 한 다음 3과 4를 입력하십시오. – pioneer903

+0

확실히 한 번에 두 행을 잘라내어 최대 값을 취할 수 있습니다. 'p = np.random.random ((31,31)); np.max (p [5 : 7])' – aestrivex