Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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:在内存受限时删除带有NAN的行_Python_Arrays_Numpy_Pandas - Fatal编程技术网

Python:在内存受限时删除带有NAN的行

Python:在内存受限时删除带有NAN的行,python,arrays,numpy,pandas,Python,Arrays,Numpy,Pandas,我有3个numpy数组[A,B,C],它们的行数相同,列数不同。我需要删除所有数组中的行,如果其中任何一个数组在该行上有nan或inf。我需要使用尽可能少的内存 例如,如果A的第一行有nan或inf,我需要删除A、B、C的第一行 我曾考虑将它们制作成一个大熊猫数据帧,然后使用dropna,但这会占用大量内存 使用isfinite()和sum(轴=-1): 使用isfinite()和sum(轴=-1): 使用isfinite()和sum(轴=-1): 使用isfinite()和sum(轴=-1):

我有3个numpy数组[A,B,C],它们的行数相同,列数不同。我需要删除所有数组中的行,如果其中任何一个数组在该行上有nan或inf。我需要使用尽可能少的内存

例如,如果A的第一行有nan或inf,我需要删除A、B、C的第一行

我曾考虑将它们制作成一个大熊猫数据帧,然后使用dropna,但这会占用大量内存

使用
isfinite()
sum(轴=-1)

使用
isfinite()
sum(轴=-1)

使用
isfinite()
sum(轴=-1)

使用
isfinite()
sum(轴=-1)



我认为,除了生成要保留的行的掩码(布尔值或索引列表),并复制每个数组,
a=a[I,:]
。是否有一种方法可以分批执行以减少内存开销?一旦构建了掩码,我不知道“批处理”操作如何节省内存开销。我认为它不需要构造中间临时数组。它只需要为新数组分配空间,复制数据,更改变量指针,并对旧数组进行垃圾收集。我认为,除了生成要保留的行的掩码(布尔值或索引列表)并复制每个数组,
a=a[I,:]
。有没有一种方法可以分批执行以减少内存开销?一旦构建了掩码,我就看不出“分批”操作如何节省内存开销。我认为它不需要构造中间临时数组。它只需要为新数组分配空间,复制数据,更改变量指针,并对旧数组进行垃圾收集。我认为,除了生成要保留的行的掩码(布尔值或索引列表)并复制每个数组,
a=a[I,:]
。有没有一种方法可以分批执行以减少内存开销?一旦构建了掩码,我就看不出“分批”操作如何节省内存开销。我认为它不需要构造中间临时数组。它只需要为新数组分配空间,复制数据,更改变量指针,并对旧数组进行垃圾收集。我认为,除了生成要保留的行的掩码(布尔值或索引列表)并复制每个数组,
a=a[I,:]
。有没有一种方法可以分批执行以减少内存开销?一旦构建了掩码,我就看不出“分批”操作如何节省内存开销。我认为它不需要构造中间临时数组。它只需要为新数组分配空间,复制数据,更改变量指针,并对旧数组进行垃圾收集。@HYRY:您使用
axis=-1
而不是
axis=1
有什么特殊原因吗?@Ewerton,没有特别的原因。@HYRY:axis=-1与axis=1相对使用的任何特殊原因?@Ewerton,没有特别的原因。@HYRY:axis=-1与axis=1相对使用的任何特殊原因?@Ewerton,没有什么特别的原因。@HYRY:axis=-1与axis=1相反,有什么特别的原因吗?@Ewerton,没有特别的原因。
import numpy as np

def random_with_nan_and_inf(shape, count):
    a = np.random.rand(*shape)
    idx = [np.random.randint(0, n, count) for n in shape]
    a[idx] = ([np.nan, np.inf] * count)[:count]
    return a

a = random_with_nan_and_inf((100, 3), 5)
b = random_with_nan_and_inf((100, 4), 10)
c = random_with_nan_and_inf((100, 5), 15)

mask = np.isfinite(a.sum(-1) + b.sum(-1) + c.sum(-1))
a2, b2, c2 = a[mask], b[mask], c[mask]