【发布时间】:2013-09-22 09:30:27
【问题描述】:
我有一个包含四列的数组“x”。
对于每一行,如果第 4 列的值为 1,那么我想删除整行:
x = np.array([[1,2,3,0],[11,2,3,24],[1,22,3,1],[1,22,3,1], [5,6,7,8], [9,10,11,1]])
for i in range(0,len(x)):
if x[i][4]==0:
x=np.delete(x, i,0)
我收到以下错误:
回溯(最近一次通话最后一次):
文件“”,第 2 行,在
如果 x[i][4]==0:
IndexError:索引超出范围
【问题讨论】:
-
附带说明,对于 numpy 数组,您通常希望使用
x[i, 4],而不是x[i][4]。第一个版本直接访问元素,而不是访问行,然后向它询问元素,因此它可以更有效 - 但更重要的是,当您开始做更有趣的事情时它会更加灵活。 -
另外,
len(x)是一件奇怪的事情。它确实有效,但是如果您想要特定轴的大小,请询问该轴的大小,而不是询问被视为行序列的数组的长度。 -
如果您想要最后一项(列或行或其他),则无需计算行数并使用该数字:而是从末尾开始计数。如果有 4 个项目,则最后一个项目是
x[3]或x[-1]。
标签: python arrays numpy indexing