gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:12:13 27 4
gpt4 key购买 nike

我想将以下组着色 octave 函数翻译为 python 并将其与 pyplot 一起使用。

函数输入:
x - 数据矩阵 (m x n)
a - 参数。
index - 大小为“m”的向量,其值范围为 [: a]
(例如,如果 a = 4,则索引可以是 [random.choice(range(4)) for i in range(m)]

“index”中的值表示第“m”个数据点所属的组的编号。该函数应绘制 x 中的所有数据点,并用不同的颜色对它们进行着色(不同颜色的数量为“a”)。

Octave 函数:

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这样的函数,所以我自己写了它(我想我做到了..):

 p = colors.hsv_to_rgb(numpy.column_stack((
numpy.linspace(0, 1, a), numpy.ones((a ,2)) )) )

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

预先感谢您的帮助。

最佳答案

那么,您想要采用 m x 3HSV 值,并将每一行转换为 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)

这会产生:

[[  0.5   0.   13. ]
[ 0.5 0. 23. ]
[ 0.5 0. 33. ]]

按照您的评论进行操作:

如果我知道你有一个矩阵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 矩阵。

关于python - 将 Matlab (Octave) 组着色代码翻译成 python (numpy, pyplot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23945764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com