如何将numpy数组拆分为含零行数组和全非零行数组两个部分
解决方案
你需要先按行判断是否包含零值,再通过布尔索引提取两类行,无需使用np.split即可实现需求。
完整调整后代码
import numpy as np C1_1=np.array([[ 0, -4, 6], [ 0, -5, 7], [-1, 0, 6], [-1, -4, 7], [-1, -5, 8]]) # 生成布尔掩码:每行只要存在0值就为True mask = np.any(C1_1 == 0, axis=1) # 分别提取两类行组合为结果 C1_B = [C1_1[mask], C1_1[~mask]] print(C1_B)
运行输出
[array([[ 0, -4, 6], [ 0, -5, 7], [-1, 0, 6]]), array([[-1, -4, 7], [-1, -5, 8]])]
原代码问题说明
- 原判断逻辑仅检查了每行第一列是否为0,不符合「检查行内所有元素是否存在0」的需求
np.split会按传入的所有切割点拆分数组,传入多个切割点就会生成多个子数组,不符合只拆分2组的要求
内容的提问来源于stack exchange,提问作者Ľubomír Rusnák
相关产品推荐
相关产品推荐

