先上代码:
#coco
#随机抽取元素,输出为数组
import numpy as np
from numpy import random as nr
np.random.seed(2022)
a = np.arange(1, 25, dtype=float)
print('a',a)
#[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.]
# print("随机可重复抽取")
c1 = nr.choice(a, size=(3, 4)) # size指定输出数组形状
print(c1)
# [[14. 17. 18. 18.]
# [17. 24. 19. 17.]
# [22. 10. 2. 12.]]
# print("随机但不重复抽取")
c2 = nr.choice(a, size=(3, 4), replace=False) # replace缺省为True,即可重复抽取。
print(c2)
# [[19. 4. 10. 18.]
# [ 5. 13. 8. 6.]
# [21. 3. 2. 22.]]
# print("随机但按制度概率抽取")
# 下式中参数p指定每个元素对应的抽取概率,缺省为每个元素被抽取的概率相同。
c3 = nr.choice(a, size=(3, 4), p=a / np.sum(a))
print(c3)
# [[ 3. 18. 23. 15.]
# [11. 17. 18. 14.]
# [24. 5. 22. 15.]]
可实现随机重复、随机不重复以及概率抽取元素。