Python中不同尺寸嵌套数组与标量相乘的实现问题
解决不规则嵌套数组元素批量乘10的问题
为什么Numpy方法失效?
当嵌套数组的子数组长度不一致时,np.array(arr)会创建一个object类型的数组(每个元素是一个子列表/子数组),而非规整的二维数值数组。此时执行*10或np.multiply会将每个子数组对象重复10次,而非对每个元素做乘法,因此达不到预期效果。
可行解决方案
1. 纯Python列表推导式(推荐)
直接利用嵌套列表推导式遍历每个元素,操作简单高效:
arr = [ [1], [2,3], [4], [5,6,7], [8], [9,10,11] ] result = [[num * 10 for num in sub_arr] for sub_arr in arr] print(result)
输出结果:
[[10], [20, 30], [40], [50, 60, 70], [80], [90, 100, 110]]
2. Numpy适配方案
如果需要用Numpy处理,需逐个处理每个子数组(每个子数组是规整的一维数组):
import numpy as np arr = [ [1], [2,3], [4], [5,6,7], [8], [9,10,11] ] # 遍历每个子数组,转成Numpy数组后乘10,再转回列表 result = [list(np.array(sub) * 10) for sub in arr] print(result)
内容的提问来源于stack exchange,提问作者d_frEak
相关产品推荐
相关产品推荐

