TypeError: объект type не имеет атрибута __getitem__ при рисовании 3D-графика.

Ниже моя функция:

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.

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

Эта ошибка указывает на линию Z:

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

Я хочу сохранить значение этой точки (матрицы) в Z

Может кто-нибудь помочь мне решить это?

Большое спасибо!

Обновление моего вопроса: у меня есть матричный массив, содержащий сотни матриц размером 81*81. Я хочу нарисовать график одной матрицы в этом массиве. Итак, я заявил:

matrix= matrixArray[draw_tick - 450]

решить конкретный. Затем я хочу поместить матричное местоположение как X & Y, а значение местоположения - как Z. Но я хочу, чтобы мои X и Y были от -40 до +40, поэтому я добавляю 40 к двум осям.,

2 ответа

От вызова справки (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)

numpy.matrix - это класс (а классы в Python - это объекты, которые являются экземплярами type), и вы пытаетесь получить к нему доступ, как если бы это был вложенный массив. Вы, вероятно, хотите значение в matrix вместо.

Другие вопросы по тегам