0

いくつかのデータをプロットしようとしていますが、注記された行からこのエラーが発生しています。私はその行をグーグルで検索しましたが、この問題に関する意味のある議論は見つかりませんでした。私はPythonを初めて使用するので、このことを理解しようとしています。

 pl.figure()
 ax = pl.subplot(111)
 ax.plot(Xk[:,0], Xk[:,1], '.')

 ERROR=>>> twos = (y == 2).nonzero()[0]
 for i in twos:
    imagebox = OffsetImage(X[i,:].reshape(28,28))
    location = Xk[i,0], Xk[i,1]
    ab = AnnotationBbox(imagebox, location, boxcoords='data', pad=0.)
    ax.add_artist(ab)

 pl.show()

これはエラーメッセージです

 AttributeError: 'bool' object has no attribute 'nonzero'

手がかりはy、同等の実体ではないようです。

私はサンプルファイルからコードをマッサージして、これが少し冗長である場合は自分のものを許してもらうようにしています。

私は助けに感謝します。

4

2 に答える 2

0

可変呼び出しに何かを割り当てようとしていますtwos

twos = (y == 2).nonzero()[0]

Pythonは(y == 2)、そのようなプロパティがないことを通知します。そして、それは論理です。なぜなら、角かっこは、またはのy == 2いずれかTrueである式の評価を引き起こすからFalseです。

Pythonで使用.するということは、あるインスタンスのメソッドまたはプロパティにアクセスしようとしていることを意味します。文字列にメソッドがバインドされている場合、すべての文字列には次のものがあります。

In [133]: A='lorem ipsum'
# pressed Tab
In [134]: A.
A.capitalize  A.endswith    A.isalnum     A.istitle     A.lstrip      A.rjust       A.splitlines  A.translate
A.center      A.expandtabs  A.isalpha     A.isupper     A.partition   A.rpartition  A.startswith  A.upper
A.count       A.find        A.isdigit     A.join        A.replace     A.rsplit      A.strip       A.zfill
A.decode      A.format      A.islower     A.ljust       A.rfind       A.rstrip      A.swapcase    
A.encode      A.index       A.isspace     A.lower       A.rindex      A.split       A.title       

python、numpy、matplotlibを初めて使用する場合は、IPythonの使用を開始することをお勧めします。Pythonの学習がよりスムーズになります。

タブプレスの代わりに、次のことができますdir(someObject)

In [134]: dir(A)
Out[134]: 
['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__doc__',
 '__eq__',
  .... snipped...
 'startswith',
 'strip',
 'swapcase',
 'title',
 'translate',
 'upper',
 'zfill']
于 2012-10-25T03:47:10.860 に答える
0

以下は私のために働きます(iPythonから):

In [11]: y = arange(5); (y==2).nonzero()[0]
Out[11]: array([2])

以下はしませんが:

In [13]: y = range(5);  (y==2).nonzero()[0]
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
AttributeError: 'bool' object has no attribute 'nonzero'

したがって、@ DSMによるコメントが示唆しているように、yが単なるリストやその他のオブジェクトではなく、numpy配列であることを確認してください。

于 2012-10-25T14:30:46.293 に答える