如何在numpy中从np.poly1d创建函数列表(数组)?

时间:2017-05-22 16:26:51

标签: python arrays numpy arcgis arcpy

我正在通过一些代表蒸发水量的tiff。下面的代码遍历图像并为每个像素创建一个多项式函数。但是,在将poly_fn附加到列表z之后,只会附加系数。任何人都可以推荐一个解决方案,以便存储在列表z中的功能?列表z必须包含351行和308列。我将tif文件附加在zip文件夹中。

import os
import glob
import arcpy
import numpy as np

arcpy.CheckOutExtension("Spatial")
arcpy.env.overwriteOutput = True
arcpy.env.scratchWorkspace = r'E:\Alcalde\Scratch'
Scratchws = r'E:\Alcalde\Scratch\\'

KC_list = glob.glob(r'E:\Alcalde\Kc\*.tif')

KC_array = []
dates = []



for KC_tiff in KC_list:
    name = os.path.basename(KC_tiff).split(".")[0]
    date = os.path.basename(name).split("_")[2]
    date = float(date[-3:])

    KC_arr = arcpy.RasterToNumPyArray(KC_tiff)
    KC_array.append(KC_arr)
    shape = numpy.shape(KC_arr)
    date_arr = np.full(shape, date)
    dates.append(date_arr)

z = []

for row in range(0, 351):
    for column in range(0,308):
        x = []
        y = []
        for img in range(0,43):
            pixel = KC_array[img][row][column]
            date = dates[img][row][column]

            x.append(dates[img][row][column])
            y.append(KC_array[img][row][column])
        print("Pixel (Row, Column): " + str(row) + "," + str(column))
        poly = np.polyfit(x, y, 3)
        poly_fn = np.poly1d(poly)

        z.append(poly_fn)
        print(poly_fn)
        print("====================================")


w = np.array([np.array(xi) for xi in z])
q = np.reshape(w, (351, 308, 4))

print(q[350][307])
print("Complete..")

0 个答案:

没有答案