python - 如何将一个数组分成两个数组,以便在一个数组中有零行和其他非零行
问题描述
我尝试划分字段,以便在一个种姓中存在矩阵的一部分,其中有零,而在另一个字段中将有非零值。
我尝试划分字段,以便在一个种姓中存在矩阵的一部分,其中有零,而在另一个字段中将有非零值。
import numpy as np
C1_1=np.array([[ 0, -4, 6],
[ 0, -5, 7],
[-1, 0, 6],
[-1, -4, 7],
[-1, -5, 8]])
C1_B= np.split(C1_1, np.where(C1_1[:, 0]!= 0.)[0][1:])
print(C1_B)
输出:
[array([[ 0, -4, 6],
[ 0, -5, 7],
[-1, 0, 6]]), array([[-1, -4, 7]]), array([[-1, -5, 8]])]
sp
C1_B[0]
array([[ 0, -4, 6],
[ 0, -5, 7],
[-1, 0, 6]])
C1_B[1]
array([[-1, -4, 7]])
C1_B[2]
array([[-1, -5, 8]])
所需输出
[array([[ 0, -4, 6],
[ 0, -5, 7],
[-1, 0, 6]]), array([[-1, -4, 7], [-1, -5, 8]])
所以
C1_B[0]
array([[ 0, -4, 6],
[ 0, -5, 7],
[-1, 0, 6]])
C1_B[1]
array([[-1, -4, 7]
[-1, -5, 8]])
所以 2 部分对我来说就足够了,而不是 3 部分有人可以告诉我吗?
解决方案
国际大学联盟:
# check any zero in each row
has_zero = (C1_1 == 0).any(1)
# find the split between zeros and non zeros
split_idx = np.flatnonzero(np.diff(has_zero)) + 1
# split on index
np.split(C1_1, split_idx)
#[array([[ 0, -4, 6],
# [ 0, -5, 7],
# [-1, 0, 6]]), array([[-1, -4, 7],
# [-1, -5, 8]])]