1
在下面的代码中,我遍历图像列表并计算给定数字的频率,在这种情况下为零和1。然后我写出来给csv。我只写了频率表,但是当我尝试添加的文件名,然后我得到的错误也能正常工作:Pandas ValueError:传递值的形状
ValueError: Shape of passed values is (1, 2), indices imply (2, 2)
当我尝试写出来的频率中的一个列表(的人的数量)和它的文件名工作正常。
我的代码如下:
import os
from osgeo import gdal
import pandas as pd
import numpy as np
# Input directory to the .kea files
InDir = "inDirectory"
# Make a list of the files
files = [file for file in os.listdir(InDir) if file.endswith('.kea')]
# Create empty list to store the counts
ZeroValues = []
OneValues = []
# Iterate through each kea file and open it
for file in files:
print('opening ' + file)
# Open file
ds = gdal.Open(os.path.join(InDir, file))
# Specify the image band
band = ds.GetRasterBand(1)
# Read the pixel values as an array
arr = band.ReadAsArray()
# remove values that are not equal (!=) to 0 (no data)
ZeroPixels = arr[arr==0]
OnePixels = arr[arr==1]
print('Number of 0 pixels = ' + str(len(ZeroPixels)))
print('Number of 1 pixels = ' + str(len(OnePixels)))
# Count the number of values in the array (length) and add to the list
ZeroValues.append(len(ZeroPixels))
OneValues.append(len(OnePixels))
# Close file
ds = Non
# Pandas datagram and out to csv
out = pd.DataFrame(ZeroValues, OneValues, files)
# Write the pandas dataframe to a csv
out.to_csv("out.csv", header=False, index=files)
在字典包裹他们的工作!感谢您连接到文档 –
好,欢迎您! –