用numpy切片?

时间:2017-04-09 17:06:27

标签: python python-2.7 numpy

import numpy as np
r = np.arange(36)
r.resize((6, 6))

print(r)
# prints:
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]
#  [24 25 26 27 28 29]
#  [30 31 32 33 34 35]]

print(r[:,::7])
# prints:
# [[ 0]
#  [ 6]
#  [12]
#  [18]
#  [24]
#  [30]]

print(r[:,0])
# prints:
# [ 0  6 12 18 24 30]

r[:,::7]给了我一个专栏,r[:,0]给了我一行,他们都有相同的数字。如果有人能向我解释原因,我会很高兴吗?

1 个答案:

答案 0 :(得分:2)

因为step参数大于相应的形状,所以你只需得到第一个" row"。但是这些不相同(即使它们包含相同的数字),因为[:, 0]中的标量索引会使相应的维度变平(因此您将获得一维数组)。但是[:, ::7]会保持维度的数量不变,但会改变步骤切片维度的形状。