Numpy练习(三)

将数组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()])

总而言之,这些题目也挺难的,自己也没做出来多少,先多看看,等之后在找一些题目来做

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值