Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中检查多维数组中的项_Python_Arrays_Infinity - Fatal编程技术网

在Python中检查多维数组中的项

在Python中检查多维数组中的项,python,arrays,infinity,Python,Arrays,Infinity,我有一个动态多维数组,每次可以有不同数量的列。要求用户选择要从具有N列的文件中提取的列,并基于此数字创建多维数组“array_VALUES” import numpy as num DIRECTORY = '/Users/user/Desktop/' DATA_DIC_FILE = "%sOUTPUT_DIC/OUTPUT_DICTIONARIES.txt" %(DIRECTORY) Choice = str( raw_input( 'Which columns do you want to

我有一个动态多维数组,每次可以有不同数量的列。要求用户选择要从具有N列的文件中提取的列,并基于此数字创建多维数组“array_VALUES”

import numpy as num

DIRECTORY = '/Users/user/Desktop/'
DATA_DIC_FILE = "%sOUTPUT_DIC/OUTPUT_DICTIONARIES.txt" %(DIRECTORY)
Choice = str( raw_input( 'Which columns do you want to use (separated by a comma):\t' ) ).split(',')
# Input something like this: 1,2,3,4

String_choice = []
PCA_INDEX     = []
Columns = len(Choice)

PCA_INDEX = {}
# PCA_INDEX is a dictionary that the key is a string whose value is a float number.
PCA_INDEX['any_string'] = float_number # The dictionary has about 50 entries. 

ARRAY_VALUES = [ [] for x in xrange( Columns) ]
""" Creating the N-dimensional array that will contain the data from the file """
""" This list has the form ARRAY_VALUES = [ [], [], [], ... ] for n-repetitions. """

ARRAY_VALUES2 = ARRAY_VALUES

lines = open( DATA_DIC_FILE ).readlines() #Read lines from the file
for i in range( 0, len(ARRAY_VALUES) ):
    ARRAY_VALUES[i] = num.loadtxt( fname = DATA_DIC_FILE, comments= '#', delimiter=',', usecols = [ int( PCA_INDEX[i] ) ], unpack = True )
    """ This saves the lists from the file to the matrix 'ARRAY_VALUES' """
现在我有了多维数组的形式 n列的数组_值=[]、[]、…]

如果有任何值是'inf',我想从每个列中删除相应的行。 我尝试使用以下代码,但不知道如何使其列数为动态:

for j in range(0, len(ARRAY_VALUES)):
    for i in range(0, len(ARRAY_VALUES[0])):
        if num.isinf( ARRAY_VALUES[j][i] ) or num.isinf( ARRAY_VALUES[]): # This is where the problem is.
        # if num.isinf( ARRAY_VALUES[0][i] ) or num.isinf(ARRAY_VALUES[1][i] or ... num.isinf(ARRAY_VALUES[last_column][i]: 
            continue
        else:
            ARRAY_VALUES2[j].append( ARRAY_VALUES[j][i] ) #Save the values into ARRAY_VALUES2. 
谁能帮我一下,告诉我怎么做这个部分:

# if num.isinf( ARRAY_VALUES[0][i] ) or num.isinf(ARRAY_VALUES[1][i] or ... num.isinf(ARRAY_VALUES[last_column][i]:
对于具有n列的多维数组,输出如下所示:

ARRAY_VALUES  = [ [8, 2, 3  , inf, 5],
                  [1, 9, inf,  4 , 5],
                  [7, 2, inf, inf, 6] ]

ARRAY_VALUES2 = [ [8, 2, 5],
                  [1, 9, 5],
                  [7, 2, 6] ]
--谢谢

如果尚未使用numpy.array,请首先使用它

然后我们迭代每一列并检查是否有任何np.inf,以创建一个允许列的掩码

最后,我们只使用numpy的列索引来访问我们感兴趣的列

正如DSM所指出的,您可以使用numpy创建掩码,避免列表理解

col_mask = np.isfinite(a).all(axis=0)
如果尚未使用numpy.array,请首先使用它

然后我们迭代每一列并检查是否有任何np.inf,以创建一个允许列的掩码

最后,我们只使用numpy的列索引来访问我们感兴趣的列

正如DSM所指出的,您可以使用numpy创建掩码,避免列表理解

col_mask = np.isfinite(a).all(axis=0)

也许
a[:,np.isfinite(a).all(axis=0)]
?绝对是一个很好的补充(这表明我使用numpy的次数没有我应该的那么多:P)谢谢你的帮助!这就是我需要的。我发现这两种方法都很有用,而且很容易实现!谢谢也许
a[:,np.isfinite(a).all(axis=0)]
?绝对是一个很好的补充(这表明我使用numpy的次数没有我应该的那么多:P)谢谢你的帮助!这就是我需要的。我发现这两种方法都很有用,而且很容易实现!谢谢