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

按索引实现数组乘法的Python函数相关问题求助

Python 数组按索引相乘实现方案

下面提供两种最常见的按索引相乘场景的实现方案,可根据实际需求选用。

场景1:多个等长数组相同索引位元素相乘

即输入N个长度一致的数组,输出长度相同的数组,每个位置的元素为所有输入数组对应索引位元素的乘积。
示例输入:[1,2,3]、[4,5,6]、[7,8,9],输出:[28, 80, 162]

原生Python实现(无第三方依赖)

from functools import reduce
import operator

def multiply_by_index(*arrays):
    # 校验所有输入数组长度一致
    if len({len(arr) for arr in arrays}) != 1:
        raise ValueError("所有输入数组的长度必须相等")
    # 按索引分组后逐组计算乘积
    return [reduce(operator.mul, item_group, 1) for item_group in zip(*arrays)]

# 测试
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
print(multiply_by_index(a,b,c))

Numpy实现(适合大规模数组运算)

import numpy as np

def multiply_by_index_np(*arrays):
    return np.array(arrays).prod(axis=0).tolist()

# 测试
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
print(multiply_by_index_np(a,b,c))

场景2:单个数组元素与对应索引值相乘

即输入单个数组,每个位置的元素和自身索引值相乘得到结果,支持自定义索引起始值。
示例输入:[2,5,7],索引从0开始输出:[0,5,14],索引从1开始输出:[2,10,21]

原生Python实现(无第三方依赖)

def element_multiply_index(arr, index_start=0):
    return [ (idx + index_start) * val for idx, val in enumerate(arr) ]

# 测试
test_arr = [2,5,7]
print(element_multiply_index(test_arr)) # 索引起始为0
print(element_multiply_index(test_arr, index_start=1)) # 索引起始为1

Numpy实现(适合大规模数组运算)

import numpy as np

def element_multiply_index_np(arr, index_start=0):
    arr_np = np.array(arr)
    idx_arr = np.arange(len(arr_np)) + index_start
    return (arr_np * idx_arr).tolist()

注意事项

  • 所有实现默认输入元素为数值类型,如需兼容非数值场景可自行添加类型校验逻辑
  • 处理长度超过1000的数组时优先使用numpy方案,运算效率远高于原生Python实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:04