我有数据导致多行被绘制,我想在我的图例中为这些行添加一个标签.我认为使用下面的例子可以更好地证明这一点,
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条不同的线条.结果情节看起来像这样
有什么方法可以告诉绘图方法避免多个标签?我不想使用自定义图例(您可以同时指定标签和线条形状)尽可能多.
我的问题类似于这里的问题.简单来说,我有一个以[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方向上随时间变化.
最后,我的问题是,
我可以使用任何标准模块来实现这一目标吗?
只是因为我想尽可能避免自定义方法!
我想使用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) 我正在寻找一种方法将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)