假设我有一个3维的numpy数组[x,y,z],我想提取z维上的一个条件下的x和y维,例如,如果z==1。我该怎么做?
您可以为此使用numpy索引。考虑一个数组:
a = np.arange(21).reshape((-1, 3))
# array([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 9, 10, 11],
# [12, 13, 14],
# [15, 16, 17],
# [18, 19, 20]])
现在您需要最后一列的条件。。。说永远的数字:
# all rows ⬎ ⬐ third column
filtered = a[a[:, 2] % 2 == 0]
# array([[ 0, 1, 2],
# [ 6, 7, 8],
# [12, 13, 14],
# [18, 19, 20]])
只需选择前两列:
filtered[:,:2]
# array([[ 0, 1],
# [ 6, 7],
# [12, 13],
# [18, 19]])
这之所以有效,是因为它提供了一个布尔值数组。。。
i = a[:, 2] % 2 == 0
# array([ True, False, True, False, True, False, True])
然后可以用来索引原件:
a[i]
# array([[ 0, 1, 2],
# [ 6, 7, 8],
# [12, 13, 14],
# [18, 19, 20]])