为了账号安全,请及时绑定邮箱和手机立即绑定

在python中从NK矩阵跨K-uplet循环

在python中从NK矩阵跨K-uplet循环

陪伴而非守候 2021-03-29 20:54:35
我必须在python脚本中使用动态编程。我用shape =(N,K)定义了一个numpy数组u。我想为每一列选择一个元素,因此生成一个K-uplet。您将如何在这种方式生成的所有K-uplet上高效地循环?一个解决方案是使用import itertoolsitertools.combination_with_replacement(list,K) 其中list = [0..N-1],但我将需要使用itertools方法的输出(索引)来迭代地构建每个K-uplet。是否有更直接的方式进行?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以使用构建K-uplet arr[ind, np.arange(K)]。当然,这实际上是一个NumPy ndarray,但是如果您真的想要连音符,则很容易将它们转换为连音符tuple(arr[ind, np.arange(K)])。


import numpy as np

import itertools as IT


N, K = 5,3

arr = np.arange(N*K).reshape(N,K)

print(arr)

# [[ 0  1  2]

#  [ 3  4  5]

#  [ 6  7  8]

#  [ 9 10 11]

#  [12 13 14]]


for ind in IT.combinations_with_replacement(range(N), K):

    print(arr[ind, np.arange(K)])

    # [0 1 2]

    # [0 1 5]

    # [0 1 8]

    # [ 0  1 11]

    # ...


查看完整回答
反对 回复 2021-04-02
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号