我有一个数组包含五个不同类别(A-E)中三个不同指标(X-Z)的数据。 现在我想检查数据集中的每一列是否有0。如果连续有0,我想删除这种类型的所有指标。如何删除一个包含零的第n行?
在我的最小的例子中,它应该找到其中一个Y行的零,因此删除所有的Y行。
AA =(['0','A','B','C','D','E'],
['X','2','3','3','3','4'],
['Y','3','4','9','7','3'],
['Z','3','4','6','3','4'],
['X','2','3','3','3','4'],
['Y','3','4','8','7','0'],
['Z','3','4','6','3','4'],
['X','2','5','3','3','4'],
['Y','3','4','0','7','3'],
['Z','3','4','6','3','4'])
我的代码如下:
import numpy as np
sequence = 3 #number of columns per sequence X,Y,Z
AA = np.array(AA)
for i in range(1,AA.shape[0]):
for j in range(1,AA.shape[1]):
if j == 0.0:
for k in range(np.min((j-1)/sequence,1),AA.shape[0],sequence):
np.delete(AA, k, 0)
,应该给我:
AA =(['0','A','B','C','D','E'],
['X','2','3','3','3','4'],
['Z','3','4','6','3','4'],
['X','2','3','3','3','4'],
['Z','3','4','6','3','4'],
['X','2','5','3','3','4'],
['Z','3','4','6','3','4'])
但不知何故,我的代码不会删除任何东西。所以我想我的删除功能有问题,但我无法弄清楚究竟是什么问题。在我的实际数据中,指标(X-Z)并不完全一样,但是'asdf-X'或'qwer -Y-asdf'并不完全相同。所以总是第一个' - '分隔符之后的标签部分是相同的。
所以我不能在它们上使用set()函数,而是必须通过与检测到0的行的距离来选择要删除的行。
问题是在删除功能之前。我认为j从1到AA.shape [1]从不等于0。你希望AA [i,j] 0 – Glostas
@Glostas,非常感谢你的输入!尽管我对编码很陌生,但我应该注意到这一点。但即使有这种适应'如果AA [i,j] == 0.0:'我的删除功能不起作用。 – Dave
我没有真正检查它。在AA中你有字符串,0.0是一个浮点数。这永远不可能是平等的。尝试如果AA [i,j]是否为'0'。作为一般的提示:使用print('输入if')或其他东西来检查代码是否进入你的if语句 – Glostas