numpy.where-奇怪的行为:新元素从何处产生?

时间:2018-11-01 20:56:26

标签: python arrays numpy

我正在尝试使用numpy.where从数组中删除[0,0,0]元素。测试数组只有一个[0,0,0]元素放置在第一个位置。它的形状为(800,3),因此选择后应为(799,3)(重塑后)或(2397,)。但是,结果数组为(2937,)。

我的代码:

if (
    $expr1 &&
    $expr2
) {
    // if body
}

这是某种错误吗?

PD:如果有用,则dtype ='uint8'。

1 个答案:

答案 0 :(得分:2)

您正在检查所有列中的所有元素,因此需要沿第一个轴使用all来查找不是全部0的行:

(arr != 0).all(1)

>>> np.where((arr != 0).all(1))[0].shape
(799,)