Python 如何从numpy中的np.poly1d生成函数列表(数组)?

Python 如何从numpy中的np.poly1d生成函数列表(数组)?,python,arrays,numpy,arcgis,arcpy,Python,Arrays,Numpy,Arcgis,Arcpy,我正在浏览一些代表蒸发水量的图片。我下面的代码在图像中循环并为每个像素生成一个多项式函数。但是,在将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 =

我正在浏览一些代表蒸发水量的图片。我下面的代码在图像中循环并为每个像素生成一个多项式函数。但是,在将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..")

z
应该是
poly1d
对象的列表。你想用
w
做什么
np.数组(xi)
是一个由一个
poly1d
的系数组成的4元素数组。您没有创建
poly1d
对象的数组。用一个
poly1d
对象向我们展示您正在尝试做什么,并解释原因。一旦你拥有了阵列,你希望它做什么?谢谢!那么,我该如何使z成为poly1d对象的列表呢?每个poly1d对象是每个像素的函数(y是裁剪系数,x表示一年中的某一天)。这几乎是一个插值。我希望能够创建一个poly1d对象数组,然后在一年中的每一天运行for循环。
z
是这些对象的列表。我们可以创建一个包含相同指针的对象数据类型数组。但是为什么不循环使用
z
本身呢?为什么不将
z
保存为一个嵌套列表,一个包含351个子列表的列表?您可以访问它
z[i][j]
。无论如何,您都没有使用数组样式的索引
w[i,j]
,因此您不会因为坚持使用列表而丢失任何东西。尝试使用对象数组只会使事情复杂化,特别是如果您对这个概念还不熟悉的话。