将数组a中大于30的值替换为30,小于10的值替换为10
思路一:np.clip(a,10,30)的含义就是对a数组进行剪枝,小于10的值置为10,大于30的值置为30
a = np.random.uniform(1, 50, 20)
b = np.clip(a,10,30)
print(b)
思路二:利用np.where(a<10,10,a):意思是,对于a数组,将小于10的数值置为10
a = np.random.uniform(1, 50, 20)
b = np.where(a<10,10,a)
b = np.where(b>30,30,b)
找到一个一维数字数组a中的所有峰值。峰顶是两边被较小数值包围的点
我是真想不到这样做
a = np.array([1, 3, 7, 1, 2, 6, 0, 1])
b1 = np.diff(a)
b2 = np.sign(b1)
b3 = np.diff(b2)
print(np.equal(b3,-2))
index = np.where(np.equal(b3,-2))
index = np.array(index)+1
print(index)
对于给定的一维数组,计算窗口大小为3的移动平均值
z = np.array([1, 3, 7, 1, 2, 6, 0, 1])
def MovingAverage(arr, n=3):
a = np.cumsum(arr)
a[n:] = a[n:] - a[:-n]
return a[n - 2:] / n
r = MovingAverage(z, 3)
print(np.around(r, 2)
对于a[:-1]的理解如下:最前面的5-1个元素
a = [1,2,3,4,5]
print(a[:-1])
[1, 2, 3, 4]
所以a[:-3]的意义就是:最前面的n-3个元素
对一个5x5的随机矩阵做归一化(重点)
这个在机器学习中,当利用梯度下降进行求最优解时,当某一个特征和另外一个特征相差是数量级时,可以使用特征放缩来进行归一化
Z = np.random.random((5,5))
max = Z.max()
min = Z.min()
Z = (Z-min)/(max-min)
print(Z)
用五种不同的方法去提取一个随机数组的整数部分
Z = np.random.uniform(0,10,10)
print (Z - Z%1)
print (np.floor(Z))
print (np.ceil(Z)-1)
print (Z.astype(int))
print (np.trunc(Z))
考虑两组点集P0和P1去描述一组线(二维)和一个点p,如何计算点p到每一条线 i (P0[i],P1[i])的距离?
import numpy as np
def distance(P0,P1,p):
A=-1/(P1[:,0]-P0[:,0])
B=1/(P1[:,1]-P0[:,1])
C=P0[:,0]/(P1[:,0]-P0[:,0])-P0[:,1]/(P1[:,1]-P0[:,1])
return np.abs(A*p[:,0]+B*p[:,1]+C)/np.sqrt(A**2+B**2)
P0 = np.random.uniform(-10,10,(10,2))
P1 = np.random.uniform(-10,10,(10,2))
p = np.random.uniform(-10,10,( 1,2))
print (distance(P0, P1, p))
画正弦函数和余弦函数, x = np.arange(0, 3 * np.pi, 0.1)?
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(0, 3*np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1)
plt.plot(x, y2)
减去矩阵每一行的平均值 ?
X = np.random.rand(5, 10)
# 新
Y = X - X.mean(axis=1, keepdims=True)
# 旧
Y = X - X.mean(axis=1).reshape(-1, 1)
print(Y)
进行概率统计分析 ?
arr1 = np.random.randint(1,10,10) arr2 = np.random.randint(1,10,10))
【知识点:数学函数】 平均数,中位数,方差,标准差,相关性矩阵,协方差矩阵等
arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)
print("arr1的平均数为:%s" %np.mean(arr1))
print("arr1的中位数为:%s" %np.median(arr1))
print("arr1的方差为:%s" %np.var(arr1))
print("arr1的标准差为:%s" %np.std(arr1))
print("arr1,arr的相关性矩阵为:%s" %np.cov(arr1,arr2))
print("arr1,arr的协方差矩阵为:%s" %np.corrcoef(arr1,arr2))
获取a和b元素匹配的位置。
a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
mask = np.equal(a, b)
x = np.where(mask)
print(x)
获取5到10 之间的所有元素
x = a[np.logical_and(a >= 5, a <= 10)]
print(x) # [ 6 9 10]
何对布尔值取反,或者原位(in-place)改变浮点数的符号(sign)?
Z = np.array([0,1])
print(Z)
np.logical_not(Z, out=Z)
找出数组中与给定值最接近的数
Z=np.array([[0,1,2,3],[4,5,6,7]])
print(Z)
z=5.1
np.abs(Z - z).argmin()
print(Z.flat[np.abs(Z - z).argmin()])
总而言之,这些题目也挺难的,自己也没做出来多少,先多看看,等之后在找一些题目来做