0

以下は私の機能です:

def draw3D(draw_tick, matrixArray):
    print "Drawing tick = %d\n" % draw_tick
    matrix = matrixArray[draw_tick - 450]
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    X = np.arange(-40, 40, 1)
    Y = np.arange(-40, 40, 1)
    X, Y = np.meshgrid(X, Y)
    Z = np.matrix[Y+40][X+40]
    surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=cm.coolwarm,linewidth=0, antialiased=False)
    ax.set_zlim(-1.01, 1.01)

    ax.zaxis.set_major_locator(LinearLocator(10))
    ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

    fig.colorbar(surf, shrink=0.5, aspect=5)

    plt.show()
    plt.close()

変数 x、y、z を使用して 3D プロットを描画したいと考えています。

TypeError: 'type' object has no attribute '__getitem__'

このエラーは、Z の行を指しています。

Z = np.matrix[Y+40][X+40]

その点 (行列の) の値を Z に格納したい

誰でも私がそれを解決するのを助けることができますか?

どうもありがとう!

私の質問の更新: 何百もの 81*81 の行列を含む matrixArray があります。その配列の 1 つの行列のプロットを描画したいと考えています。だから私は宣言した:

matrix= matrixArray[draw_tick - 450]

特定のものを決定する。次に、行列の位置を X & Y として配置し、位置の値を Z として配置したいのですが、X と Y を -40 から +40 にしたいので、2 つの軸に 40 を追加しています。 .

4

2 に答える 2

0

numpy.matrixはクラス (および Python のクラスは のインスタンスであるオブジェクトtype) であり、ネストされた配列であるかのようにアクセスしようとしています。おそらくmatrix代わりに値が必要です。

于 2016-11-14T19:41:56.440 に答える
0

help(np.matrix) を呼び出すと、次のようになります。

 |  Examples
 |  --------
 |  >>> a = np.matrix('1 2; 3 4')
 |  >>> print a
 |  [[1 2]
 |   [3 4]]
 |  
 |  >>> np.matrix([[1, 2], [3, 4]])
 |  matrix([[1, 2],
 |          [3, 4]])
 |  

マトリックスのインスタンスを作成する必要があります。おそらくあなたはやりたい:

Z = np.matrix(YOUR_ndarray_AS_ARGUMENT)
于 2016-11-14T19:42:08.403 に答える