将Matlab(Octave)组着色代码翻译成python(numpy,pyplot)

2024-04-19 20:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把下面的group coloringoctave函数翻译成python并与pyplot一起使用。在

功能输入:
x-数据矩阵(m x n)
a—一个参数。
索引-大小为“m”的向量,值在范围[:A]
(例如,如果a=4,则索引可以是[随机选择(范围(4))对于范围(m)中的i)

“索引”中的值表示第m个数据点所属的组的编号。 函数应该绘制x的所有数据点,并用不同的颜色(不同颜色的数量是“a”)。在

倍频程函数:

p = hsv(a); % This is a x 3 metrix
colors = p(index, :); % ****This is m x 3 metrix****
scatter(X(:,1), X(:,2), 10, colors);

我在python中找不到hsv这样的函数,所以我自己写的(我想我找到了):

^{pr2}$

但是我不知道如何在python(numpy)中执行矩阵选择p(index,:)。 特别是因为“索引”的大小比“a”大。在

提前谢谢你的帮助。在


Tags: 数据函数功能参数indexis颜色group
1条回答
网友
1楼 · 发布于 2024-04-19 20:23:23

那么,您想要取m x 3值的m x 3,并将每一行转换为RGB?在

import numpy as np
import colorsys
mymatrix = np.matrix([[11,12,13],
                      [21,22,23],
                      [31,32,33]])

def to_hsv(x):
    return colorsys.rgb_to_hsv(*x)

#Apply the to_hsv function to each matrix row.
print np.apply_along_axis(to_hsv, axis=1, arr=mymatrix)

这会产生:

^{pr2}$

坚持你的意见:

如果我知道你有一个矩阵p,它是a x 3矩阵,你想从矩阵中随机选择行,直到你有一个新的矩阵m x 3?在

好吧。假设你有一个矩阵p定义如下:

a = 5
p = np.random.randint(5, size=(a, 3))

现在,创建一个范围0 -> 3(索引从0开始到a-1)之间的随机整数列表,长度为m

m = 20
index = np.random.randint(a, size=m)

现在访问正确的索引并将其插入到新的矩阵中:

p_prime = np.matrix([p[i] for i in index])

生成20 x 3矩阵。在

相关问题 更多 >