【发布时间】:2021-11-29 10:54:33
【问题描述】:
有没有办法我可以在下面的result 代码中运行multi,以便它在下面列出a,b,c 的迭代时给出预期的输出。我试图做到这一点,以便[:,] 可用于遍历二维数组中的行,但它不起作用。我如何在没有 for 循环的情况下迭代所有行以获得下面的预期输出。 for 循环和 numpy 代码的意思是一样的。
Numpy 代码:
import numpy as np
a = np.array([1,2,3,11,23])
b = np.array([-2, 65, 8, 0.98])
c = np.array([5, -6])
multi = np.array([a, b, c])
result = (multi[:,] > 0).cumsum() / np.arange(1, len(multi[:,])+1) * 100
For循环代码:
import numpy as np
a = np.array([1,2,3,11,23])
b = np.array([-2, 65, 8, 0.98])
c = np.array([5, -6])
multi = np.array([a, b, c])
for i in range(len(multi)):
predictability = (multi[i] > 0).cumsum() / np.arange(1, len(multi[i])+1) * 100
print(predictability)
结果:
[[100. 100. 100. 100. 100.],
[ 0. 50. 66.66666667 75. ],
[100. 50.]]
【问题讨论】:
-
所以你希望每一行都有不同大小的数组,所以我怀疑是否有矢量化的方式来做到这一点。
-
使用
multi = [a, b, c]。参差不齐的数组对你一点帮助都没有。 -
multi[:,]没有做任何有用的事情。查看multi.shape和dtype甚至打印数组。
标签: python arrays numpy multidimensional-array iterator