微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得 (k - 1)-numpy.arange(k) 的组合

如何解决如何获得 (k - 1)-numpy.arange(k) 的组合

给定任何整数 np.arange(k) 值的 k,我试图找到它的所有 (k - 1)-组合。

k = 4 示例(最好按此顺序):

array([[1,2,3],[0,1,2]])

使用常规 python,这是有效的:

[[j for j in range(k) if i != j] for i in range(k)]

但我的目标是更numpythonic方法。这是我迄今为止最好的一次拍摄:

np.rot90(np.arange(k).repeat(k - 1).reshape((k - 1,k)))

是否有使用 numpy 更简洁的方法,还是我应该只使用普通的 python?

解决方法

hpaulj 已经在他的评论中指出了这一点,但这里有一种使用 itertools combinations 来解决这个问题的方法:

from itertools import combinations
import numpy as np


k = 4
a = np.array([*combinations(np.arange(k),3)])
print(a)

也许您还想看看使用 this post 来实现类似功能的 sympy library

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。