次の「最小」の再現ケースをまとめただけです(pylint他のエラー、警告、ヒント、または提案をスローしないようにしたかったので、引用符で最小にします-ボイラープレートが少しあることを意味します)。
pylint_error.py:
"""
Docstring
"""
import numpy as np
def main():
"""
Main entrypoint
"""
test = np.array([1])
print(test.shape[0])
if __name__ == "__main__":
main()
pylintこのコード(pylint pylint_error.py)で実行すると、次の出力が得られます。
$> pylint pylint_error.py
************* Module pylint_error
pylint_error.py:13:10: E1136: Value 'test.shape' is unsubscriptable (unsubscriptable-object)
------------------------------------------------------------------
Your code has been rated at 1.67/10 (previous run: 1.67/10, +0.00)
それはtest.shapeかなり明確にそうであるにもかかわらず、それは添え字付け可能ではないと主張しています。コードを実行すると、うまく機能します。
$> python pylint_error.py
1
それでpylint、混乱の原因は何ですか?それをどのように修正できますか?
追加のメモ:
np.arange(1)エラーがなくなるときにテストを宣言すると- 私がテストをとして宣言する場合は
np.zeros(1)、np.zeros((1))、np.ones(1)、またはnp.ones((1))エラーがないではない離れて行きます np.full((1), 1)エラーがなくなるときにテストを宣言すると- タイプ(
test: np.ndarray = np.array([1]))を指定してもエラーは修正されません dtype(np.array([1], dtype=np.uint8))を指定してもエラーは修正されません- テストのスライス(
test[:].shape)を取ると、エラーが解消されます
私の最初の本能は、さまざまなNumPYメソッド(arangevs zerosvs fullなど)での一貫性のない動作は、それがの単なるバグであることを示唆していると言いNumPYます。しかしNumPY、私が誤解しているいくつかの根本的な概念がある可能性があります。偶然にのみ機能する未定義の動作を伴うコードを記述しないようにしたいと思います。
pylint以前に非難したいですnumpy