我有一个geotiff灰度图像,它给了我(4377,6172)2D数组。在第一部分中,我正在考虑(> 1024,:1024)我的压缩算法的值(总值是 - > 1024 * 1024 = 1048576)。通过这个算法,我通过算法得到finalmatrix list var中的总共4个值。在此之后,我正在对这些值应用K-means算法。一个程序如下:
import numpy as np
from osgeo import gdal
from sklearn import cluster
import matplotlib.pyplot as plt
dataset =gdal.Open("1.tif")
band = dataset.GetRasterBand(1)
img = band.ReadAsArray()
finalmat = [255, 0, 2, 2]
#Converting list to array for dimensional change
ay = np.asarray(finalmat).reshape(-1,1)
fig = plt.figure()
k_means = cluster.KMeans(n_clusters=2)
k_means.fit(ay)
cluster_means = k_means.cluster_centers_.squeeze()
a_clustered = k_means.labels_
print('# of observation :',ay.shape)
print('Cluster Means : ', cluster_means)
a_clustered.shape= img.shape
fig=plt.figure(figsize=(125,125))
ax = plt.subplot(2,4,8)
plt.axis('off')
xlabel = str(1) , ' clusters'
ax.set_title(xlabel)
plt.imshow(a_clustered)
plt.show()
fig.savefig('kmeans-1 clust ndvi08jan2010_guj 12 .png')

在上面的程序中,我在 a_clustered.shape = img.shape 行中收到错误。我得到的错误如下:
Error line:
a_clustered.shape= img.shape
ValueError: cannot reshape array of size 4 into shape (4377,6172)
<matplotlib.figure.Figure at 0x7fb7c63975c0>
&#13;
实际上,我想通过压缩值可视化原始图像上的聚类。你能否建议做什么
答案 0 :(得分:0)
在1维数据上使用KMeans没有多大意义。
在4 x 1阵列上使用它更有意义!
您的网站来自于您无法将4 x 1整数数组调整为大图片的事实。
只需打印您要绘制的数组a_clustered
即可。它可能包含[0, 1, 1, 1]
。