小编has*_*uke的帖子

pyplot在图例中组合了多个线条标签

我有数据导致多行被绘制,我想在我的图例中为这些行添加一个标签.我认为使用下面的例子可以更好地证明这一点,

a = np.array([[ 3.57,  1.76,  7.42,  6.52],
              [ 1.57,  1.2 ,  3.02,  6.88],
              [ 2.23,  4.86,  5.12,  2.81],
              [ 4.48,  1.38,  2.14,  0.86],
              [ 6.68,  1.72,  8.56,  3.23]])

plt.plot(a[:,::2].T, a[:, 1::2].T, 'r', label='data_a')

plt.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)

正如您在Out [23]中看到的那样,该情节产生了5条不同的线条.结果情节看起来像这样 多线图的传说

有什么方法可以告诉绘图方法避免多个标签?我不想使用自定义图例(您可以同时指定标签和线条形状)尽可能多.

python plot matplotlib legend

12
推荐指数
5
解决办法
1万
查看次数

python中的有界圆插值

我的问题类似于这里的问题.简单来说,我有一个以[0,360]为界的时间序列角度数据.我需要在测量之间插值.目前,我正在使用scipy.interpolate.interp1d.为了使我的问题更加清晰,这是一个示例场景,

import numpy as np
from scipy import interpolate
data = np.array([[0, 2, 4], [1, 359, 1]]) # first row time index, second row angle measurements
f = interpolate.interp1d(data[0, :], data[1, :], kind='linear', bounds_error=False, fill_value=None)
f([1, 3])
Run Code Online (Sandbox Code Playgroud)

这将导致[180,180.].然而,在时间2和时间4之间,角度从359变为1,即仅2度变化,3处的内插值应为0.角度在CCW方向上随时间变化.

最后,我的问题是,

我可以使用任何标准模块来实现这一目标吗?

只是因为我想尽可能避免自定义方法!

python interpolation numpy scipy

7
推荐指数
1
解决办法
2033
查看次数

GaussianMixture 使用组件参数初始化 - sklearn

我想使用sklearn.mixture.GaussianMixture来存储高斯混合模型,以便我以后可以使用它来使用score_samples方法在样本点生成样本或值。这是一个示例,其中组件具有以下权重、均值和协方差

import numpy as np
weights = np.array([0.6322941277066596, 0.3677058722933399])
mu = np.array([[0.9148052872961359, 1.9792961751316835], 
               [-1.0917396392992502, -0.9304220945910037]])
sigma = np.array([[[2.267889129267119, 0.6553245618368836], 
                        [0.6553245618368835, 0.6571014653342457]], 
                       [[0.9516607767206848, -0.7445831474157608], 
                        [-0.7445831474157608, 1.006599716443763]]])
Run Code Online (Sandbox Code Playgroud)

然后我初始化混合物如下

from sklearn import mixture
gmix = mixture.GaussianMixture(n_components=2, covariance_type='full')
gmix.weights_ = weights   # mixture weights (n_components,) 
gmix.means_ = mu          # mixture means (n_components, 2) 
gmix.covariances_ = sigma  # mixture cov (n_components, 2, 2) 
Run Code Online (Sandbox Code Playgroud)

最后,我尝试根据导致错误的参数生成示例:

x = gmix.sample(1000)
NotFittedError: This GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before …
Run Code Online (Sandbox Code Playgroud)

python numpy gaussian scikit-learn mixture

5
推荐指数
1
解决办法
4204
查看次数

3D numpy数组成块对角矩阵

我正在寻找一种方法将nXaXb numpy数组转换为块对角矩阵.我已经遇到过scipy.linalg.block_diag,其中的下方(对于我的情况)是它需要单独给出矩阵的每个块.然而,当n非常高时,这是具有挑战性的,所以为了使事情更清楚,我可以说我有一个

import numpy as np    
a = np.random.rand(3,2,2)
array([[[ 0.33599705,  0.92803544],
        [ 0.6087729 ,  0.8557143 ]],
       [[ 0.81496749,  0.15694689],
        [ 0.87476697,  0.67761456]],
       [[ 0.11375185,  0.32927167],
        [ 0.3456032 ,  0.48672131]]])
Run Code Online (Sandbox Code Playgroud)

我想要实现的是同样的东西

from scipy.linalg import block_diag
block_diag(a[0], a[1],a[2])
array([[ 0.33599705,  0.92803544,  0.        ,  0.        ,  0.        ,   0.        ],
       [ 0.6087729 ,  0.8557143 ,  0.        ,  0.        ,  0.        ,   0.        ],
       [ 0.        ,  0.        ,  0.81496749,  0.15694689,  0.        ,   0.        ],
       [ 0.        ,  0.        ,  0.87476697, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matrix scipy

3
推荐指数
1
解决办法
1137
查看次数