numpy和scipy中的各种常规操作

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()

猜你喜欢

转载自blog.csdn.net/qintianhaohao/article/details/80591290