pydantic 初始化 numpy ndarray

pydantic initialize numpy ndarray

如何在使用 pydantic 时初始化 ndarray?
此代码抛出 ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

from pydantic.dataclasses import dataclass
import numpy as np

@dataclass
class TestNumpyArray:
    numpyArray: np.ndarray = np.zeros(10)

testNumpyArray = TestNumpyArray()

您需要为 Field 声明提供 default_factory

请注意,您不能在 Pydantic 数据类中使用任意类型,因此您可能需要扩展 BaseModel:

from pydantic import BaseModel, Field
import numpy as np

class TestNumpyArray(BaseModel):
    numpyArray: np.ndarray = Field(default_factory=lambda: np.zeros(10))

    class Config:
        arbitrary_types_allowed = True

testNumpyArray = TestNumpyArray()

您还可以将非 Pydantic 数据类与 dataclasses.field(default_factory=...) 一起使用。