Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
368 views
in Technique[技术] by (71.8m points)

python - get the i-th slice of the k-th dimension in a numpy array

I have an n-dimensional numpy array, and I'd like to get the i-th slice of the k-th dimension. There must be something better than

# ... 
elif k == 5:
    b = a[:, :, :, :, :, i, ...]
# ...
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
b = a[(slice(None),) * k + (i,)]

Construct the indexing tuple manually.

As documented in the Python language reference, an expression of the form

a[:, :, :, :, :, i]

is converted to

a[(slice(None), slice(None), slice(None), slice(None), slice(None), i)]

We can achieve the same effect by building that tuple directly instead of using slicing notation. (There's the minor caveat that building the tuple directly produces a[(i,)] instead of a[i] for k=0, but NumPy handles these the same for scalar i.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...