def calibrate(x, y, z):
# H = numpy.array([x, y, z, -y**2, -z**2, numpy.ones([len(x), 1])])
H = numpy.array([x, y, z, -y**2, -z**2, numpy.ones([len(x)])])
H = numpy.transpose(H)
w = x**2
(X, residues, rank, shape) = linalg.lstsq(H, w)
OSx = X[0] / 2
OSy = X[1] / (2 * X[3])
OSz = X[2] / (2 * X[4])
A = X[5] + OSx**2 + X[3] * OSy**2 + X[4] * OSz**2
B = A / X[3]
C = A / X[4]
SCx = numpy.sqrt(A)
SCy = numpy.sqrt(B)
SCz = numpy.sqrt(C)
# type conversion from numpy.float64 to standard python floats
offsets = [OSx, OSy, OSz]
scale = [SCx, SCy, SCz]
offsets = map(numpy.asscalar, offsets)
scale = map(numpy.asscalar, scale)
return (offsets, scale)
Я обнаружил, что asscalar устарел с версии NumPy 1.16. Я нашел одну ссылку, в которой говорится об использовании numpy.ndarray.item, но понятия не имею, как это сделать.
Я попробовал это:
При попытке обновить старый скрипт Python я столкнулся со следующей ошибкой: [code]module 'numpy' has no attribute 'asscalar'. Did you mean: 'isscalar'? [/code] В частности: [code]def calibrate(x, y, z): # H = numpy.array([x, y, z, -y**2, -z**2, numpy.ones([len(x), 1])]) H = numpy.array([x, y, z, -y**2, -z**2, numpy.ones([len(x)])]) H = numpy.transpose(H) w = x**2
return (offsets, scale) [/code] Я обнаружил, что asscalar устарел с версии NumPy 1.16. Я нашел одну ссылку, в которой говорится об использовании numpy.ndarray.item, но понятия не имею, как это сделать. Я попробовал это: [code]offsets = map.item(offsets) scale = map.item( scale) [/code] но получил эту ошибку: [code]AttributeError: type object 'map' has no attribute 'item' [/code] Как это решить?