numpy练习

先生成A,B矩阵,令n,m分别为200,500

import numpy
from scipy.linalg import toeplitz
A = numpy.random.normal(size=(200, 500))
B = toeplitz(range(1, 501))
Exercise 9.1: Matrix operations  

Calculate A + A, A·AT, AT·A and A·B. Write a function that computes A(B − λI) for any λ. 

answer1 = numpy.add(A, A)
answer2 = numpy.dot(A, A.T)
answer3 = numpy.dot(A.T, A)
answer4 = numpy.dot(A, B)


def compute(A, B, r):
    return (A.dot(B - r * numpy.eye(len(B)))) # 以B的维数生成一个单位矩阵

Ex 9-2 Solving a linear system

solution = np.linalg.solve(matrix_b, vector_b)
Exercise 9.3: Norms  

Compute the Frobenius norm of A: kAkF and the infinity norm of B: kBk∞. Also find the largest and smallest singular values of B.


frobenius_norm_A = np.linalg.norm(matrix_a, 'fro')


infinity_norm_B = np.linalg.norm(matrix_b, np.inf)

#b的最大最小值
max_element_of_B = matrix_b.max()
min_element_of_B = matrix_b.min()
Exercise 9.4: Power iteration  
Generate a matrix Z, n × n, with Gaussian entries, and use the power iteration to find the largest eigenvalue and corresponding eigenvector of Z. How many iterations are needed till convergence?  
Optional: use the time.clock() method to compare computation time when varying n.


def powerIter(Z, e):
    b_k = numpy.asmatrix(numpy.random.rand(Z.shape[1])).T
    b_k_bak = b_k
    iteration = 0
    start_time = time.clock()
    while iteration == 0 or abs(numpy.linalg.norm(b_k - b_k_bak)) >= e:
        b_k1 = numpy.dot(Z, b_k)
        b_k1_norm = numpy.linalg.norm(b_k1)
        b_k_bak = b_k
        b_k = b_k1 / b_k1_norm
        iteration += 1
    end_time = time.clock()
    print("iteration = ", iteration, end='')
    print(", time = ", end_time - start_time, "s.")
    return b_k

Z = numpy.asmatrix(numpy.random.random_integers(1, 100, size=(500, 500)))
print(powerIter(Z, 10e-5))

Exercise 9.5: Singular values 

Generate an n × n matrix, denoted by C, where each entry is 1 with probability p and 0 otherwise. Use the linear algebra library of Scipy to compute the singular values of C. What can you say about the relationship between n, p and the largest singular value?


numpy实际上提供了svd函数来计算奇异值,故使用它测试

import numpy as np
def generate_matrix(row,col,p):
    re = np.ones((row,col))
    for i in range(row):
        for j in range(col):
            if np.random.rand() < p :
                re[i][j] =1
            else:
                re[i][j] = 0
    return re


for n in [100,200,300,400,500]:
    for p in [0.1,0.2,0.5,0.8]:
        C = generate_matrix(n, n, p)
        u, s, vh = np.linalg.svd(C)
        max_singular_value = np.max(s)
        print('n:', n, '  p:', p, '  s:', max_singular_value, '\n')

Exercise 9.6: Nearest neighbor 
Write a function that takes a value z and an array A and finds the element in A that is closest to z. The function should return the closest value, not index. 

Hint: Use the built-in functionality of Numpy rather than writing code to find this value manually. In particular, use brackets and argmin.

mport numpy as np

n=200

def find_closest(A, z):
    C = np.abs(A - z)
    idx = np.argmin(C)
    return A[idx // A.shape[0]][idx % A.shape[0]]


A = np.random.rand(n, n)
print(A)
print(find_closest(A, 1)) 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值