【发布时间】:2021-12-02 09:18:48
【问题描述】:
我想将下面的列表理解转换为一个 3 维数组,在该数组中打印出数组中每个迭代的 last index, max , min。下面的(arr[i:] > 0).cumsum()/ np.arange(1, len(arr[i:])+1) * 100) 函数计算number of positive array values/ length of array,因此在第一个数组[12,12,-3,-1,2,1] 中,6 个值中有4 个是正数,因此最终结果为66.66%。但是,如果您只采用前 2 个索引 [12,12.....],则它是 100 %,因此这是最大有效值,如果您采用前 4 个索引 [12,12,-3,-1],则效率将下降到 50%。 last_inc, maxs , mins 在下面不起作用,但 result 起作用。我怎样才能将last_inc, maxs , mins 合并到代码中并获得下面的预期输出?
import numpy as np
def run(*args):
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_inc = result[-1]
maxs = np.max(result)
mins = np.min(result)
run(np.array([12,12,-3,-1,2,1]), np.array([-3,-1,-2,1]), np.array([12,-12]))
预期输出:
last_indexes[[66.66666666666666, 60.0, 50.0, 66.66666666666666, 100.0, 100.0], [25.0, 33.33333333333333, 50.0, 100.0], [50.0, 0.0]]
max[[100.0, 100.0, 50.0, 66.66666666666666, 100.0, 100.0],[25.0, 33.33333333333333, 50.0, 100.0],[100.0, 0.0]]
min[[50.0, 33.33333333333333, 0.0, 0.0, 100.0, 100.0]]
【问题讨论】:
-
formatting通常处理对象的字符串显示,例如数组。这似乎不是这里的情况。当您显示预期输出时,您不会显示run产生的内容,无论是错误还是意外输出。不要指望每个读者都复制粘贴代码并自己运行。 -
说到格式,需要水平滚动才能阅读的代码行,更不用说理解,是一个很大的障碍。为什么要花时间在一个很少考虑使它对读者友好的问题上!
标签: python arrays numpy multidimensional-array indexing