在函数中使用numpy ndarray



我有以下代码。我有一个矩阵,我想一次取两行,并将其放入这些函数中。我已经研究了intertool,但我不确定它们在这种情况下是否有效。我试过islice,但它没有给出我想要的输出。我知道我必须给"方法"提供位置参数,但我忽略了它们,因为这段代码会给出结果,它们只是相同的最小值、最大值等等。我试图给我一些关于索引错误和对象不可下标的问题。我是python的新手,我正在读一些书,但它们并没有直接涵盖这一点。我已经查看了一些人在stackoverflow上寻找的内容,但他们大多希望一次读取两行文件,而不是numpy ndarrays。欢迎提出任何建议。

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()))"""

我不清楚你在做什么,也不理解你的代码结构(你在这里提供的不是一个独立的例子),但你的代码中的索引是错误的,而不是python/numpy的工作方式。

范围vec[a:b]从vec中获取b-a元素(而不是b-a+1!),从索引a开始,到索引b-1结束。您似乎在假设它将包括索引b处的元素;事实并非如此。

相关内容

  • 没有找到相关文章

最新更新