我想使用Matplotlib在已经预先计数的数据上绘制直方图.例如,假设我有原始数据
data = [1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 10]
Run Code Online (Sandbox Code Playgroud)
鉴于这些数据,我可以使用
pylab.hist(data, bins=[...])
Run Code Online (Sandbox Code Playgroud)
绘制直方图.
就我而言,数据已被预先计算并表示为字典:
counted_data = {1: 1, 2: 2, 3: 1, 4: 1, 5: 4, 6: 1, 10: 1}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想将这个预先计数的数据传递给直方图函数,让我可以控制箱宽,绘图范围等,就好像我已经将原始数据传递给它一样.作为一种解决方法,我将我的计数扩展到原始数据:
data = list(chain.from_iterable(repeat(value, count)
for (value, count) in counted_data.iteritems()))
Run Code Online (Sandbox Code Playgroud)
当counted_data包含数百万个数据点的计数时,这是低效的.
是否有更简单的方法使用Matplotlib从我预先计算的数据中生成直方图?
或者,如果最简单的条形图是预先装箱的数据,是否有一种方便的方法可以将我的每件商品计数"汇总"为分箱数量?
我正在尝试构建一个新包,但是,当我尝试从 VSCode 内部或终端运行任何文件时,我遇到了以下错误:
ModuleNotFoundError: No module name 'x'
Run Code Online (Sandbox Code Playgroud)
我当前的文件夹结构如下:
package
|---module
|------__init__.py
|------calculations.py
|------miscfuncs.py
|---tests
|------__init__.py
|------test_calcs.py
|---setup.py
|---requirements.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我通过 VSCode 并在 test_calcs.py 中使用import module.calculations as calc或运行测试(PyTest)时from module.calculations import Class,测试按预期工作 - 这让我感到困惑。
我知道这是一个常见问题,但我无法找出适用于此的解决方案。
我尝试使用下面的代码检查工作目录是否在系统路径中。返回的目录列表中的第一项是我正在使用的目录。
import sys
print(sys.path)
Run Code Online (Sandbox Code Playgroud)
我还在文件中使用了以下内容但无济于事:
import module.calculations
import .module.calculations
from . import miscfuncs
Run Code Online (Sandbox Code Playgroud)
尝试时import .module.calculations,我得到以下信息:
ModuleNotFoundError: No module named '__main__.module'; '__main__' is not a package
Run Code Online (Sandbox Code Playgroud)
当尝试from . import miscfuncs在calculations.py中时,我收到以下错误:
ImportError: cannot import name 'miscfuncs'
Run Code Online (Sandbox Code Playgroud)
当处理模块文件夹中的文件时,我可以使用相对导入:import calculations并且它工作得很好。这对于模块内的文件来说很好,但当我在 test_calcs.py …
我一直在使用 pytube 在 python 中下载 youtube 视频。到目前为止,我已经能够以 mp4 格式下载。
yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")
vids= yt.streams.all()
for i in range(len(vids)):
print(i,'. ',vids[i])
vnum = int(input("Enter vid num: "))
vids[vnum].download(r"C:\YTDownloads")
print('done')
Run Code Online (Sandbox Code Playgroud)
我设法下载了“音频”版本,但它是.mp4格式的。我确实尝试将扩展名重命名为.mp3,并播放了音频,但应用程序(Windows Media Player)停止响应并开始滞后。
如何直接以音频文件.mp3格式下载视频?请提供一些代码,因为我是使用此模块的新手。
我将一组句子的录音保存到相应的一组音频文件中.
句子包括:
Ich weiß es nicht!
¡No lo sé!
Ég veit ekki!
Run Code Online (Sandbox Code Playgroud)
您如何建议我将句子转换为人类可读的文件名,稍后将在在线服务器上提供.我现在不确定将来可能会处理哪些语言.
更新:
请注意,两句话不能相互冲突.例如:
É bär icke dej.
E bår icke dej.
Run Code Online (Sandbox Code Playgroud)
无法解析为相同的文件名,因为这些将相互覆盖.这是这里提到的slugify函数的问题:将字符串转换为有效的文件名?
我想出的最好的是使用urllib.parse.quote.但是我认为最终的输出比我希望的更难阅读.有什么建议?:
Ich%20wei%C3%9F%20es%20nicht%21
%C2%A1No%20lo%20s%C3%A9%21
%C3%89g%20veit%20ekki%21
Run Code Online (Sandbox Code Playgroud) 这是那些“出于纯粹的好奇心而提出的(可能徒劳的希望我会学到一些东西)”的问题。
我正在研究在大量字符串上节省内存的方法,在某些情况下,在numpy中执行字符串操作似乎很有用。但是,我得到了一些令人惊讶的结果:
import random
import string
milstr = [''.join(random.choices(string.ascii_letters, k=10)) for _ in range(1000000)]
npmstr = np.array(milstr, dtype=np.dtype(np.unicode_, 1000000))
Run Code Online (Sandbox Code Playgroud)
使用的内存消耗memory_profiler:
%memit [x.upper() for x in milstr]
peak memory: 420.96 MiB, increment: 61.02 MiB
%memit np.core.defchararray.upper(npmstr)
peak memory: 391.48 MiB, increment: 31.52 MiB
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好; 但是,计时结果令我惊讶:
%timeit [x.upper() for x in milstr]
129 ms ± 926 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit np.core.defchararray.upper(npmstr)
373 ms ± 2.36 ms …Run Code Online (Sandbox Code Playgroud) python ×4
python-3.x ×2
audio ×1
benchmarking ×1
file-format ×1
filenames ×1
histogram ×1
matplotlib ×1
numpy ×1
pytube ×1
sanitize ×1
youtube-api ×1