Ваша ошибка происходит из-за того, что вы сравниваете массив (результат (x-(M/2))**2+(y-(N/2))**2
снова скалярного значения r = 1225
.
Этот результат является массивом логического типа, который нельзя использовать как есть. условие (см. этот ответ ).
В соответствии с рекомендациями @ImportanceOfBeingErnest, вы должны использовать np.where
в этом случае.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
M=70
N=70
r=(N/2)**2
def f(x, y):
computed = (x-(M/2))**2+(y-(N/2))**2
return np.where(computed < r, r / 122.5, 10.0)
x = np.linspace(0, 70, M)
y = np.linspace(0, 70, N)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
plt.show()