重新写这行代码new_mu = np.array([np.mean(one_d_img[labels == i], axis=0) for i in range(k)])
时间: 2024-02-23 14:03:29 浏览: 23
这行代码的作用是根据聚类结果 labels,计算每个聚类簇的均值,即新的聚类中心坐标。重新写一下可以是这样的:
```
new_mu = []
for i in range(k):
cluster_i = one_d_img[labels == i]
mean_i = np.mean(cluster_i, axis=0)
new_mu.append(mean_i)
new_mu = np.array(new_mu)
```
这段代码首先通过 for 循环遍历每个聚类簇的标签 i,然后利用布尔索引选出所有属于聚类簇 i 的像素点,存储在 cluster_i 变量中。接着,使用 np.mean 函数计算 cluster_i 中所有像素点的均值,即新的聚类中心坐标,存储在 mean_i 变量中。最后,将所有聚类中心坐标存储在列表 new_mu 中,并转换成 Numpy 数组。
相关问题
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False data_5 = np.array([2450,2450,1598,1479.5,1550,1486.5]) data_6 = np.array([1379.5,1378,1350,1338.4,1300,1139.5,1126.5]) data_7 = np.array([1099,1099,1099,1079,1079,1024.5]) data_8 = np.array([1035,1035,1079.5,1126.5,1400,1396,1364.5]) data_9 = np.array([1500,1399,1490,1333.33,1350,1300]) data_10 = np.array([1269.9,1269.4,115,1149.5,1149]) data_11 = np.array([1149,1280,1260,1255,1235,1100]) data_12 = np.array([1040,1040,999,999,938.5]) data_13 = np.array([900,845,894.49,765.49,740,649.5,649.5]) data_14 = np.array([649.47,649.46,649.46,649,639,644]) data_15 = np.array([648.79,649.5,879,799,799,859.89]) data_16 = np.array([857.89,849.99,848.96,848.7,845.9]) plt.boxplot([data_5, data_6, data_7, data_8, data_9, data_10, data_11, data_12, data_13, data_14, data_15, data_16], labels=('5日', '6日','7日','8日','9日','10日' ,'11日','12日','13日','14日','15日','16日') ) plt.show()美化此代码
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 数据
data_5 = np.array([2450,2450,1598,1479.5,1550,1486.5])
data_6 = np.array([1379.5,1378,1350,1338.4,1300,1139.5,1126.5])
data_7 = np.array([1099,1099,1099,1079,1079,1024.5])
data_8 = np.array([1035,1035,1079.5,1126.5,1400,1396,1364.5])
data_9 = np.array([1500,1399,1490,1333.33,1350,1300])
data_10 = np.array([1269.9,1269.4,115,1149.5,1149])
data_11 = np.array([1149,1280,1260,1255,1235,1100])
data_12 = np.array([1040,1040,999,999,938.5])
data_13 = np.array([900,845,894.49,765.49,740,649.5,649.5])
data_14 = np.array([649.47,649.46,649.46,649,639,644])
data_15 = np.array([648.79,649.5,879,799,799,859.89])
data_16 = np.array([857.89,849.99,848.96,848.7,845.9])
# 绘制箱线图
plt.boxplot([data_5, data_6, data_7, data_8, data_9, data_10, data_11, data_12, data_13, data_14, data_15, data_16],
labels=('5日', '6日','7日','8日','9日','10日','11日','12日','13日','14日','15日','16日')
)
# 设置标题和坐标轴标签
plt.title('不同日期的数据分布箱线图')
plt.xlabel('日期')
plt.ylabel('数据值')
# 显示图形
plt.show()
labels_array=np.array.cpu()(labels).to(device)
这段代码看起来有一些问题。首先,`.cpu()`应该是`.cpu`,且它的作用是将Tensor从GPU上移动到CPU上。但是,接下来却又调用了一个`.to(device)`,这样做的效果就是将Tensor又移回到了GPU上,这显然是多余的。
另外,`np.array`应该是`np.array()`,且这里的作用是将PyTorch Tensor转换为NumPy数组。但是,在这种情况下,使用`.detach().cpu().numpy()`可能更清晰,因为它可以直接将Tensor转换为NumPy数组,并且不会影响计算图。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)