numpy
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import leastsq
from numpy import poly1d
if __name__ == '__main__':
# a = np.array([(1, 2, 3), (4, 5, 6)])
# a = np.zeros((4,6))
# a = np.ones((3,5,7), dtype=np.int32)
# a = np.arange(1, 5, 0.3) # 1 - 5 之间,间隔0.3
# a = np.linspace(1, 5, 10) # 1 - 5 之间,分成10个数
# a = np.arange(12).reshape(3, 4)
# b = a <6
# a = np.arange(16).reshape(4, 4)
# b = np.arange(16).reshape(4, 4)
# print(a, '\n', b)
# print(a*b) # 使用 * 为矩阵元素相乘
# print(np.dot(a, b)) # 使用 dot 才是矩阵的乘法
# a = np.arange(16).reshape(4, 4)
# print(a.sum(), '\n', a.max()) # 没有参数时自动把矩阵转成一维
# print(a.sum(axis = 0), '\n', a.max(axis = 1)) # 有参数时按照列或行计算
# print(np.sqrt(a), '\n', np.add(a, a)) # 各种函数,开方、求和等,都是对元素操作
# a = np.concatenate(([3], [0] * 5, np.arange(-1, 1.002, 2 / 9.0))) # 构造特殊矩阵的简单方法
# a = np.r_[3, [0] * 5, -1:1:10j]
# a = np.mgrid[0:5, 0:5]
#
# a = poly1d([3, 4, 5]) # 直接生成一个多项式,并对多项式进行各种骚操作
# a = poly1d([3, 4, 5], True)
# print(a)
# print(a([1, 3]))
# print(a.deriv())
# def addsubtract(a, b): # 可以直接对若干个矩阵中的元素进行自定义的各种操作
# if a > b:
# return a - b
# else:
# return a + b
# vec_addsubtract = np.vectorize(addsubtract)
# print(vec_addsubtract([1,2,3,4], [6,4,2,1]))
scipy
# 各种特殊函数的绘制
from scipy import special
def drumhead_height(n, k, distance, angle, t):
kth_zero = special.jn_zeros(n, k)[-1]
return np.cos(t) * np.cos(n * angle) * special.jn(n, distance * kth_zero)
theta = np.r_[0:2 * np.pi:50j]
radius = np.r_[0:1:50j]
x = np.array([r * np.cos(theta) for r in radius])
y = np.array([r * np.sin(theta) for r in radius])
z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cm.jet)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()