我有一个 A 数组,其中一些索引填充了 1,其他值是 nan。
A: [ 楠楠楠楠楠楠楠楠楠 1. 1. 楠楠楠楠楠楠楠楠楠楠楠楠楠楠 1. 1. 楠楠楠楠楠楠楠 1. 楠楠楠楠 1. 楠楠楠楠Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan Nan]
类型(A):类“numpy.ndarray”
有没有办法在这些值之后递增值(不使用任何类型的循环,仅使用过滤、索引和广播)并获得结果 B 数组:
B: [ 南南南南南南南南南 1. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 1. 1. 2. 3. 4. 5 . 6. 7. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19 20. 21. 22. 23 .24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.]
最佳答案
是的:
B = np.ones_like(A)
ons, = np.where(A==1)
if ons.size:
B[:ons[0]] = np.nan
if ons.size > 1:
B[ons[1:]] -= np.diff(ons)
B[ons[0]:] = B[ons[0]:].cumsum()
B
# array([nan, nan, nan, nan, nan, nan, nan, 1., 1., 2., 3., 4., 5.,
# 6., 7., 8., 9., 10., 11., 12., 1., 1., 2., 3., 4., 5.,
# 6., 7., 1., 2., 3., 4., 5., 1., 2., 3., 4., 5., 6.,
# 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.,
# 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32.,
# 33., 34., 35., 36., 37., 38., 39.])
关于python - 根据预定义的数组值填充 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622890/