You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NumPy中实现Mathematica的MixedRadix功能?

NumPy中混合进制转换的实现方案

NumPy并没有提供直接对应Mathematica MixedRadix的内置函数,但可以利用其向量化特性实现符合惯用风格的版本,替代原生Python的循环实现。

符合NumPy风格的实现代码

import numpy as np

def np_mixed_radix(num, bases):
    bases = np.asarray(bases)
    # 计算各进制位的权重(从左到右的累积乘积逆序)
    weights = np.cumprod(bases[::-1])[::-1]
    # 补全最后一位权重为1,确保位数匹配
    weights = np.append(weights, 1)[1:]
    # 向量化计算每一位数字
    digits = (num // weights) % bases
    return digits

实现说明

  • 先将输入的bases转为NumPy数组,为后续向量化操作铺路
  • 权重数组的计算:通过cumprod(累积乘积)得到每一位进制对应的权重,例如输入bases=[2,3,4]时,权重数组为[12,4,1]
  • 利用整数除法和取模的向量化运算,一次性完成所有位数字的计算,避免了原生Python的循环操作,在处理批量数字(如num为NumPy数组)时效率优势明显

示例验证

调用np_mixed_radix(10, [2,3,4])会返回array([1, 0, 2]),和你原生Python版本的输出一致,验证了正确性。

内容的提问来源于stack exchange,提问作者xpqz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:15:31