numpy100题 27-46题
- Consider an integer vector Z, which of these expressions are legal? (★☆☆)
'''
Z**Z True
2 << Z >> 2 True #结果存疑
Z <- Z True #返回一个bool数组
1j*Z True #1j复数
Z/1/1 True
Z<Z>Z True #结果存疑
'''
- What are the result of the following expressions?
1. np.array(0) / np.array(0)
2. np.array(0) // np.array(0)
3. np.array([np.nan]).astype(int).astype(float)
1. np.nan
2. 0
3. array([-2.14748365e+09])
- How to round away from zero a float array ? (★☆☆)
array_29=np.random.random(5)+2
array_29_ard=np.around(array_29,decimals=1)
print(array_29)
print(array_29_ard)
#np.around函数:四舍五入保留小数位数,decimals=要保留小数点后几位,default=0
- How to find common values between two arrays? (★☆☆)
array_30_1=np.array([1,2,3,4,5])
array_30_2=np.array([2,4,6,8,10])
cv=np.intersect1d(array_30_1,array_30_2)
print(cv)
#np.intersect1d() 求两个数组的交集
- How to ignore all numpy warnings (not recommended)? (★☆☆)
#解法1
default=np.seterr(all='ignore')
array_31=np.array([1])/0 #不报错
_=np.seterr(**default) #返回会报错的默认状态
array_31=np.array([1])/0 #报错
#解法2
with np.errstate(divide='ignore'):
#array_31_2=np.array([1])/0 #不报错
- Is the following expressions true? (★☆☆)
print(np.sqrt(-1)) #nan
print(np.emath.sqrt(-1)) #1j可以计算虚数
print(np.sqrt(-1) == np.emath.sqrt(-1)) #False
- How to get the dates of yesterday, today and tomorrow? (★☆☆)
yesterday_33=np.datetime64('today','D')-np.timedelta64(1,'D')
today_33=np.datetime64('today','D')
tomorrow_33=np.datetime64('today','D')+np.timedelta64(1,'D')
# datetime64 代表具体日期
# timedelta64 代表一段时间
print(yesterday_33)
print(today_33)
print(tomorrow_33)
- How to get all the dates corresponding to the month of July 2016? (★★☆)
gap_34=np.arange('2016-06-01',
'2016-07-01',
dtype=np.datetime64)
print(gap_34)
- How to compute ((A+B)*(-A/2)) in place (without coy)? (★★☆)
解法1:
A_35=np.arange(9).reshape(3,3)
B_35=np.ones((3,3))
res=(A_35+B_35)*(-A_35/2)
print(res) #35.1
解法2
A_35_2=np.arange(9,dtype='float').reshape(3,3)
B_35_2=np.ones((3,3))
np.add(A_35_2,B_35_2,out=B_35_2)
np.divide(A_35_2,2,out=A_35_2)
np.negative(A_35_2,out=A_35_2)
np.multiply(A_35_2,B_35_2,out=A_35_2)
print(A_35_2)
- Extract the integer part of a random array of positive numbers using 4 different methods (★★☆)
int_36=np.random.random(5)*10
print(int_36)
print(np.floor(int_36)) #36.1 向下取整
print(np.ceil(int_36))#36.2 向上取整
print(np.trunc(int_36))#36.3 截取整数
print(int_36//1) #36.4
print(int_36-int_36%1)#36.5
print(int_36.astype(int))#36.6强制取整
- Create a 5x5 matrix with row values ranging from 0 to 4 (★★☆)
mat_37=np.zeros((5,5)) #shape=(5,5)
mat_37=mat_37+np.arange(5) #shape=(5,)
print(mat_37)
#
- Consider a generator function that generates 10 integers and use it to build an array (★☆☆)
解法一:
iterable_38=(x*x for x in range(10)) #可迭代对象
list_10=list(range(10))
print(list_10)
print(np.fromiter(list_10, np.float))
print(np.fromiter(iterable_38, np.float)) #利用可迭代对象生成一个数组
解法二:
def fun_38():
for i in range(10):
yield i
print(np.fromiter(fun_38(),np.float)) #38.2
- Create a vector of size 10 with values ranging from 0 to 1, both excluded (★★☆)
vector_39=np.linspace(0,1,11,endpoint=False)[1:]
print(vector_39)
- Create a random vector of size 10 and sort it (★★☆)
vector_40=np.random.random(10)*10
vector_40=np.sort(vector_40)
print(vector_40)
- How to sum a small array faster than np.sum? (★★☆)
array_41=np.arange(5)
print(np.add.reduce(array_41))
#小数组计算比np.sum更快
- Consider two random array A and B, check if they are equal (★★☆)
A_42=np.random.random((3,3))
B_42=np.random.random((3,3))
print(A_42 is B_42) False
print(np.allclose(A_42,B_42)) False
print(np.array_equal(A_42,B_42)) False #42.
- Make an array immutable (read-only) (★★☆)
array_43=np.arange(5)
array_43.flags.writeable=False #read-only
array_43[0]=1
#ValueError: assignment destination is read-only
- Consider a random 10x2 matrix representing cartesian coordinates, convert them to polar coordinates (★★☆)
解法1
mat_44=np.random.random((10,2))
for row in mat_44:
# print(row)
# print(row**2)
p=np.sqrt((row**2)[0]+(row**2)[1])
sida=np.arctan(row[0]/row[1])#正切值(-pi/2,pi/2)
print(p,sida)
解法2
mat_44=np.random.random((10,2))
X_44,Y_44=mat_44[:,0],mat_44[:,1]
p=np.sqrt(X_44**2+Y_44**2)
sida=np.arctan2(X_44,Y_44)#对边,直角边,(-pi,pi)
print(p,sida)
- Create random vector of size 10 and replace the maximum value by 0 (★★☆)
vector_45=np.random.random(10)*10
arg_45=np.argmax(vector_45)
vector_45[arg_45]=0
print(vector_45)
- Create a structured array with x and y coordinates covering the [0,1]x[0,1] area (★★☆)
array_46=np.zeros((5,5),dtype=[('x','f4'),('y','f4')])
array_46['x'],array_46['y']=np.meshgrid(np.linspace(0,1,5),
np.linspace(0,1,5))
print(array_46)
np.meshgrid()函数
根据传入的两个一维数组参数生成两个数组元素的列表,常常用于生成点阵
a=np.arange(5)
#array([0, 1, 2, 3, 4])
b=np.arange(2)
#array([0,1])
A,B=np.meshgrid(a,b)
print(A)
#array([[0, 1, 2, 3, 4],
# [0, 1, 2, 3, 4]])
print(B)
#array([[0, 0, 0, 0, 0],
# [1, 1, 1, 1, 1]])
#A,B生成了shape=(5,2)的数组
- Given two arrays, X and Y, construct the Cauchy matrix C (Cij =1/(xi - yj))
X_46=np.arange(2,6)
Y_46=np.ones(5)
Cauchy_mat=1/(X_46[:,np.newaxis]-Y_46)
print(Cauchy_mat)
概率论部分
1.二维连续随机变量,概率密度,边缘分布,条件分布,独立性
2.常见的二维连续分布,均匀分布,正态分布
3.多维随机变量的分布...
这部分内容真抽象,难以理解










网友评论