numpy习题


#https://blog.csdn.net/u010156024/article/details/50419338
import numpy as np
import scipy.linalg
import random
from sklearn import random_projection
import time
#generate a matrix with random Gaussian entries
A = np.random.normal(0, 1, size=(200, 500))

#generate a Toeplitz matrix B
r = []
while len(r) != 500:
	r.append(random.randint(0, 100))
B = scipy.linalg.toeplitz(r)


#exercise one
print((A+A).shape)
print(np.dot(A, A.T).shape)
print(np.dot(A.T, A).shape)
print(np.dot(A, B).shape)
#A(B-lamta*I)
I = np.eye(500)
def f(lamta):
	tmp = B - lamta * I
	return np.dot(A, tmp)
# print(f(0.5).shape)


#exercise two
b = np.random.randint(0, 100, size = (500, 1))
print(np.dot(scipy.linalg.inv(B), b).shape)



#exercise three
#https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.norm.html
print(np.linalg.norm(A))
print(np.linalg.norm(B, np.inf))
#largest singular values of B
print(np.linalg.norm(B, 2))
#smallest singular values of B
print(np.linalg.norm(B, -2))


#exercise four
#https://blogs.sas.com/content/iml/2012/05/09/the-power-method.html
#generate Z
r = []
while len(r) != 200:
	r.append(random.randint(0, 100))
Z = scipy.linalg.toeplitz(r)
t0 = time.clock()
print("eigenvectors:", np.linalg.eigh(Z))
print(time.clock()-t0)


#exercise five
#http://fa.bianp.net/blog/2012/singular-value-decomposition-in-scipy/
n = 5
p = 0.5
C = np.random.ranf(size = (n, n))
i = 0;j = 0
while i < n:
	while j < n:
		if C[i][j] < p:
			C[i][j] = 1
		else:
			C[i][j] = 0 
		j += 1
	i += 1
	j = 0
print(C)
print(scipy.linalg.svd(C))
print(scipy.sparse.linalg.svds(C, 1))


#exercise six
#https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmin.html#numpy.argmin
A_array = np.random.randint(0, 100, size = (5, 5))
z = 40
A_new = np.abs(A_array-z)
ind = np.unravel_index(np.argmin(A_new, axis = None), A_new.shape)
# print(A_array[k/5][k%5])
print(A_array[ind])





因为矩阵过大,所以有些只输出其大小,截图也只选了部分关键的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值