Python 从大型数组中删除值组

Python 从大型数组中删除值组,python,arrays,python-3.x,Python,Arrays,Python 3.x,我有一个4列数组,在一列中,它们由大约6或7个不同的重复值组成。我希望通过删除一种类型的数字和每个值的关联行来创建一组较小的数组 例如: 1 2 3 4 3 6 5 4 3 2 9 8 5 3 0 8 4 6 9 5 7 3 4 7 在第二列中,重复了2、3和6,如何提取第二列中包含3的所有行,然后将此结果放入新数组中 编辑:我忘了提到数据作为2D数组位于.dat文件中,使用Python列表 # construct a list contain all rows with column 'co

我有一个4列数组,在一列中,它们由大约6或7个不同的重复值组成。我希望通过删除一种类型的数字和每个值的关联行来创建一组较小的数组

例如:

1 2 3 4
3 6 5 4
3 2 9 8
5 3 0 8
4 6 9 5
7 3 4 7
在第二列中,重复了2、3和6,如何提取第二列中包含3的所有行,然后将此结果放入新数组中

编辑:我忘了提到数据作为2D数组位于.dat文件中,使用Python列表

# construct a list contain all rows with column 'colm' value  'value' for a matrix 
# matrix is a list contain rows from file.dat eg formated [[],[],[]...]
def construct(colm, value, matrix):
    result = [] 
    for row in matrix:
        if row[colm-1] == value:
            result.append(row)
    return result

# Read file.dat and return list matrix
def read():
    var = []
    try:
        file = open("file.dat", 'r')
        for line in file:
            # append a list with a file.dat row, and convert each item to integer
            var.append([int(y) for y in line.strip().split(' ')])
    finally:
        file.close()
    return var
所以你可以把它当作

constuct(2, 3, read()) # all rows with second column with value 3
注意:关于
NumPy
我没有太多的探讨,但是如果.dat文件包含大量数据,那么最好对其进行有效的操作

使用Python列表

# construct a list contain all rows with column 'colm' value  'value' for a matrix 
# matrix is a list contain rows from file.dat eg formated [[],[],[]...]
def construct(colm, value, matrix):
    result = [] 
    for row in matrix:
        if row[colm-1] == value:
            result.append(row)
    return result

# Read file.dat and return list matrix
def read():
    var = []
    try:
        file = open("file.dat", 'r')
        for line in file:
            # append a list with a file.dat row, and convert each item to integer
            var.append([int(y) for y in line.strip().split(' ')])
    finally:
        file.close()
    return var
所以你可以把它当作

constuct(2, 3, read()) # all rows with second column with value 3

注意:关于
NumPy
我没有太多的探讨,但是如果.dat文件包含大量数据,那么最好对其进行有效的操作

您可以使用numpy的布尔索引功能

>>> import numpy as np
>>> data = np.array([[1, 2, 3, 4], 
                     [3, 6, 5, 4], 
                     [3, 2, 9, 8], 
                     [5, 3, 0, 8], 
                     [4, 6, 9, 5], 
                     [7, 3, 4, 7]])

>>> print(data[data[:,1] == 3, :])
[[5 3 0 8]
 [7 3 4 7]]

可以使用numpy的布尔索引功能

>>> import numpy as np
>>> data = np.array([[1, 2, 3, 4], 
                     [3, 6, 5, 4], 
                     [3, 2, 9, 8], 
                     [5, 3, 0, 8], 
                     [4, 6, 9, 5], 
                     [7, 3, 4, 7]])

>>> print(data[data[:,1] == 3, :])
[[5 3 0 8]
 [7 3 4 7]]

嗯,您尝试过什么?这些数据是在普通Python 2D列表中,还是在Numpy数组中,或者是其他类型的数组对象中?澄清一下,它在.dat文件中作为2D数组。嗯,您尝试过什么?这些数据是在普通Python 2D列表中,还是在Numpy数组中,或者其他类型的数组对象?因为它作为2D数组存在于.dat文件中,这很有用,我将学习它以备将来使用,谢谢您,但其中包含许多我不熟悉的方面。我曾使用过numpy,但在这种情况下(由于某些操作失败,必须重新添加注释),矩阵值是文件中的整个矩阵正确吗?、结果=[]是伪变量吗?line.strip.split如何工作?我以前使用过numpy,并且知道它的一些方面,但是对于从基于某个数字的矩阵中提取行,我不知道如何在numpy中这样做。我添加了一些注释。那里的大多数事情都是非常基本的,所以在开始复杂的工作之前,先尝试一下基本的python技能。这将避免不必要的头痛。我推荐“快速Python书”@Krios101Book link->这很有用,我将学习它以备将来使用,谢谢你,但其中包含许多我不熟悉的方面。我曾使用过numpy,但在这种情况下(由于某些操作失败,必须重新添加注释),矩阵值是文件中的整个矩阵正确吗?、结果=[]是伪变量吗?line.strip.split如何工作?我以前使用过numpy,并且知道它的一些方面,但是对于从基于某个数字的矩阵中提取行,我不知道如何在numpy中这样做。我添加了一些注释。那里的大多数事情都是非常基本的,所以在开始复杂的工作之前,先尝试一下基本的python技能。这将避免不必要的头痛。我推荐“快速Python书”@Krios101Book链接->