如何从numpy多维数组中获取各子数组的末位值、最大值和最小值
你原有代码的问题是直接对整个嵌套的object类型numpy数组调用np.max/np.min,没有逐行遍历每个子数组计算目标值。修改后的完整实现如下:
import numpy as np def run(*args): # 原有result生成逻辑不变 result = np.array([np.array([((arr[i:] > 0).cumsum()/ np.arange(1, len(arr[i:])+1) * 100) for i in range(len(arr))],dtype=object) for arr in args], dtype=object) # 初始化三个结果容器 last_incs = [] maxs = [] mins = [] # 遍历每个输入数组对应的二维结果 for arr_res in result: curr_last = [] curr_max = [] curr_min = [] # 遍历当前二维结果的每一行子数组 for sub_arr in arr_res: curr_last.append(sub_arr[-1]) # 取子数组末尾值 curr_max.append(np.max(sub_arr)) # 取子数组最大值 curr_min.append(np.min(sub_arr)) # 取子数组最小值 # 转为object类型数组加入总结果 last_incs.append(np.array(curr_last, dtype=object)) maxs.append(np.array(curr_max, dtype=object)) mins.append(np.array(curr_min, dtype=object)) # 打印结果验证,也可以根据需求返回三个结果 print("last incs:", last_incs) print("mins:", mins) print("maxs:", maxs) return last_incs, mins, maxs run(np.array([12,12,-3,-1,2,1]), np.array([-3,-1,-2,1]), np.array([12,-12]))
运行上述代码输出的结果和你给出的预期输出完全匹配。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

