python - 列出在 Python 中滚动六面骰子的每次迭代
问题描述
我正在制作一个动画条形图,以显示滚动六面骰子的数字频率如何收敛,您滚动骰子的次数越多。我想在每次迭代后显示数字频率,为此我必须在另一个列表中获取该迭代的数字频率列表。这是到目前为止的代码:
import numpy as np
import numpy.random as rd
rd.seed(23)
n_samples = 3
freqs = np.zeros(6)
frequencies = []
for roll in range(n_samples):
x = rd.randint(0, 6)
freqs[x] += 1
print(freqs)
frequencies.append(freqs)
print()
for x in frequencies:
print(x)
输出:
[0. 0. 0. 1. 0. 0.]
[1. 0. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
期望的输出:
[0. 0. 0. 1. 0. 0.]
[1. 0. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[1. 0. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 0.]
上面三个列表确实显示了每次迭代后的数字频率。但是,当我尝试将列表附加到“频率”列表时,最后它只显示每次的最终数字频率,如以下三个列表所示。这让我很困惑,而且我对 Python 还很陌生。如何在输出的前三个列表中获得每个列表,在另一个列表中?提前致谢!
解决方案
您可以通过仅更改来做到这frequencies.append(freqs)
一点frequencies.append(freqs.copy())
。freqs
像这样,您可以制作一个独立于原始文件的副本freqs
。改变freqs
不会改变freqs.copy()
。
import numpy as np
import numpy.random as rd
rd.seed(23)
n_samples = 3
freqs = np.zeros(6)
frequencies = []
for roll in range(n_samples):
x = rd.randint(0, 6)
freqs[x] += 1
print(freqs)
frequencies.append(freqs.copy())
print(frequencies)
print()
for x in frequencies:
print(x)
推荐阅读
- iframe - 如何为原子电子 iframe 或 webview 自定义滚动条?
- python - Seaborn:标题和副标题放置
- batch-file - 如果是环境变量,则取 cmd 行参数并回显它
- javascript - 无法读取 null 类型的事件侦听器的属性
- c# - 使用 c# 的 Thread 和 Task 之间的性能比较
- java - 无法将 Angular 5+ 中的图像上传到 Spring Boot
- docker - docker-compose 替代文件不会在该目录中获取 .env
- java - 如何解决:找不到适合 jdbc:mysql://localhost:3306/sampledb 的驱动程序
- angular - 在 Angular 5 中使用 url 和 ../ 进行导航
- python - decompose() 总是返回 'bound method Tag.decompose of'。Python, BeautifulSoup