python - numpy 数组中的互补切片

标签 python arrays numpy

例如,如果我有一个 numpy 数组:

A = np.array([[3, 2], [2, -1], [2, 3], [5, 6], [7,-1] , [8, 9]])

我想将数组的一部分与具有 -1 的子数组与不具有 -1 的子数组分开。 请记住,我正在处理非常大的数据集,因此每个操作都可能很长,所以我尝试在内存和 CPU 时间方面采用最有效的方式。

我现在正在做的是:

 slicing1 = np.where(A[:, 1] == -1)
 with_ones = A[slicing1]
 slicing2 = np.setdiff1d(np.arange(A.shape[0]), slicing1, assume_unique=True)
 without_ones = A[slicing2]

有没有办法不创建 slicing2 列表来减少内存消耗,因为它可能非常大? 有没有更好的方法来解决这个问题?

最佳答案

一种方法是存储所需的逻辑索引,然后在第二种情况下使用其逻辑非索引:

In [46]: indx = A[:, 1] != -1

In [47]: A[indx]
Out[47]: 
array([[3, 2],
       [2, 3],
       [5, 6],
       [8, 9]])

In [48]: A[~indx]
Out[48]: 
array([[ 2, -1],
       [ 7, -1]])

关于python - numpy 数组中的互补切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29112408/

相关文章:

java - 计算 10 个用户输入整数的数组中出现次数最少的数

python - 不同数组项的所有可能组合

python - 替换 numpy 数组中的值时防止字符串被截断

javascript - 在javascript中散列字符串数组

python - 如何在Python3中加速 "for loop"

python - 使用 2 个索引列表对 2D Numpy 数组进行索引

python - 如何在 Windows 中将 .ui 转换为 py?

python - 合并两个带有标签的列表

Python优化用于计算欧式距离

python - 将列名称与 pySpark ML 中的模型参数相关联