Python 提取和numpy.any函数,有没有可能使它更简单?
如果有任何可能使这段代码更简单,我将非常感激!我正在尝试删除带有零的行。第一列是日期。如果所有其他列都为零,则必须删除它们。列的数量各不相同Python 提取和numpy.any函数,有没有可能使它更简单?,python,numpy,Python,Numpy,如果有任何可能使这段代码更简单,我将非常感激!我正在尝试删除带有零的行。第一列是日期。如果所有其他列都为零,则必须删除它们。列的数量各不相同 import numpy as np condition = [ np.any( list(x)[1:] ) for x in r] r = np.extract( condition, r ) 您可以避免列表理解,而是使用奇特的索引: #!/usr/bin/env python import numpy as np import datetime r
import numpy as np
condition = [ np.any( list(x)[1:] ) for x in r]
r = np.extract( condition, r )
您可以避免列表理解,而是使用奇特的索引:
#!/usr/bin/env python
import numpy as np
import datetime
r=np.array([(datetime.date(2000,1,1),0,1),
(datetime.date(2000,1,1),1,1),
(datetime.date(2000,1,1),1,0),
(datetime.date(2000,1,1),0,0),
])
r=r[r[:,1:].any(axis=1)]
print(r)
# [[2000-01-01 0 1]
# [2000-01-01 1 1]
# [2000-01-01 1 0]
如果r是n数组,那么
r[:,1:]是删除第一列的视图。
r[:,1:]。any(axis=1)是一个布尔数组,然后可以将其用作“奇特的索引”对我来说似乎足够简单。你有什么不高兴的?只是觉得ndarray必须是一个更好的方式,转换到列表,然后列表理解看起来很奇怪,我看不懂这个。请按“代码样本”格式填写。编辑你的文本,选择代码,然后点击看起来像“101/010”的按钮。这是一个很有希望的答案,但我认为它还不太正确。如果所有的行都是零,他希望行被压缩,而不是任何一个值都是零。非常感谢,我需要的绝对是更好地了解ndarray索引!