100道练习题,玩转Numpy模块!(上)_创建一个长度为30的随机向量并计算它的平均值

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

Z = np.arange(5)
1j*Z # legal


array([0.+0.j, 0.+1.j, 0.+2.j, 0.+3.j, 0.+4.j])



Z = np.arange(5)
Z/1/1 # legal


array([0., 1., 2., 3., 4.])



Z = np.arange(5)
ZZ # false


ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


## 28. 下列表达式的结果分别是什么?(★☆☆)


np.array(0) / np.array(0)  
 np.array(0) // np.array(0)  
 np.array([np.nan]).astype(int).astype(float)



print(np.array(0) / np.array(0))
print(np.array(0) // np.array(0))
print(np.array([np.nan]).astype(int).astype(float))


## 29. 如何从零位对浮点数组做舍入 ? (★☆☆)


(提示: np.uniform, np.copysign, np.ceil, np.abs)



Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))


## 30. 如何找到两个数组中的共同元素? (★☆☆)


(提示: np.intersect1d)



Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print(np.intersect1d(Z1,Z2))


## 31. 如何忽略所有的 numpy 警告(尽管不建议这么做)? (★☆☆)


(提示: np.seterr, np.errstate)



Suicide mode on

defaults = np.seterr(all=“ignore”)
Z = np.ones(1) / 0

Back to sanity

_ = np.seterr(**defaults)


An equivalent way, with a context manager:



with np.errstate(divide=‘ignore’):
Z = np.ones(1) / 0


## 32. 下面的表达式是正确的吗? (★☆☆)


(提示: imaginary number)


np.sqrt(-1) == np.emath.sqrt(-1)



np.sqrt(-1) == np.emath.sqrt(-1)


False


## 33. 如何得到昨天,今天,明天的日期? (★☆☆)


(提示: np.datetime64, np.timedelta64)



yesterday = np.datetime64(‘today’, ‘D’) - np.timedelta64(1, ‘D’)
today = np.datetime64(‘today’, ‘D’)
tomorrow = np.datetime64(‘today’, ‘D’) + np.timedelta64(1, ‘D’)
print ("Yesterday is " + str(yesterday))
print ("Today is " + str(today))
print ("Tomorrow is "+ str(tomorrow))


## 34. 如何得到所有与2016年7月对应的日期?(★★☆)


(提示: np.arange(dtype=datetime64[‘D’]))



Z = np.arange(‘2016-07’, ‘2016-08’, dtype=‘datetime64[D]’)
print(Z)


## 35. 如何直接在位计算(A+B)\*(-A/2)(不建立副本)? (★★☆)


(提示: np.add(out=), np.negative(out=), np.multiply(out=), np.divide(out=))



A = np.ones(3)*1
B = np.ones(3)*2
C = np.ones(3)*3
np.add(A,B,out=B)
np.divide(A,2,out=A)
np.negative(A,out=A)
np.multiply(A,B,out=A)
array([-1.5, -1.5, -1.5])


## 36. 用五种不同的方法去提取一个随机数组的整数部分(★★☆)


(提示: %, np.floor, np.ceil, astype, np.trunc)


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


## 37. 创建一个5x5的矩阵,其中每行的数值范围从0到4 (★★☆)


(提示: np.arange)



Z = np.zeros((5,5))
Z += np.arange(5)
print (Z)


## 38. 通过考虑一个可生成10个整数的函数,来构建一个数组(★☆☆)


(提示: np.fromiter)



def generate():
for x in range(10):
yield x
Z = np.fromiter(generate(),dtype=float,count=-1)
print (Z)


[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]


## 39. 创建一个长度为10的随机向量,其值域范围从0到1,但是不包括0和1 (★★☆)


(提示: np.linspace)



Z = np.linspace(0,1,11,endpoint=False)[1:]
print (Z)


## 40. 创建一个长度为10的随机向量,并将其排序 (★★☆)


(提示: sort)



Z = np.random.random(10)
Z.sort()
print (Z)


## 41.对于一个小数组,如何用比 np.sum更快的方式对其求和?(★★☆)


(提示: np.add.reduce)



Z = np.arange(10)
np.add.reduce(Z)


## 42. 对于两个随机数组A和B,检查它们是否相等(★★☆)


(提示: np.allclose, np.array\_equal)



A = np.random.randint(0,2,5)
B = np.random.randint(0,2,5)

Assuming identical shape of the arrays and a tolerance for the comparison of values

equal = np.allclose(A,B)
print(equal)


False



方法2

Checking both the shape and the element values, no tolerance (values have to be exactly equal)

equal = np.array_eq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值