我有想要做直方图的数据,但我希望直方图从给定值开始,并且要修复条形的宽度.例如,对于系列[1,3,5,10,12,20,21,25],我想,而不是
>>> p.Series([1, 3, 5, 10, 12, 20, 21, 25]).hist(bins=3).figure
# | |
# | | |
# | | |
# 0 8.5 17
Run Code Online (Sandbox Code Playgroud)
我希望条的宽度为10:
| |
| | |
| | |
0 10 20
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点 ?
编辑:我最终得到了我想要的东西
我试图加快DTW(X,Y,DIST =拉姆达X,Y:规范(X - Y,ORD = 1)))在 https://github.com/pierre-rouanet/dtw/blob/master /dtw.py通过矢量化它。第一个循环很简单,但我不知道如何矢量化第二个循环:
for i in range(r):
for j in range(c):
D[i+1, j+1] += min(D[i, j], D[i, j+1], D[i+1, j])
Run Code Online (Sandbox Code Playgroud)
主要问题是,即使我迭代 i,每个 D[i+1, j+1] 也依赖于 D[i+1, j]。
是否可以对其进行矢量化,还是必须使用 Cython ?
对于形状为 1000x2 的 x 和 y,原始代码需要 15s,而我当前的代码需要 1.8s,主要是在第二个循环中。
编辑:最小的工作示例
np.random.seed(0); A = np.random.randn(4, 3)
r, c = np.array(A.shape)-1
for i in range(r):
for j in range(c):
A[i+1, j+1] += min(A[i, j], A[i, j+1], A[i+1, j])
A
Run Code Online (Sandbox Code Playgroud)
应该给:
array([[ 1.76405235, 0.40015721, 0.97873798],
[ 2.2408932 , …
Run Code Online (Sandbox Code Playgroud)