Python环境配置与数据处理
1.numpy的基础练习
1.1 创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
import numpy as np
import pandas as pd
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
nd1=np.zeros(shape=10)
print(nd1)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
nd1[4]=1
print(nd1)
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
1.2 使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素
nd2=np.random.random(size=(10,10))
print(nd2)
[[0.61993158 0.31522033 0.28300058 0.17359121 0.80817087 0.75573108
0.2524076 0.75421005 0.50546551 0.19976574]
[0.88604238 0.11417706 0.65778908 0.86969322 0.62615679 0.41322621
0.717381 0.66991761 0.92522042 0.25820991]
[0.94981597 0.27551905 0.78895276 0.16181883 0.80214942 0.13796826
0.3016356 0.23770425 0.2730307 0.51625704]
[0.56275125 0.37429869 0.21132968 0.30695606 0.33033307 0.71280133
0.80531668 0.45105168 0.99316998 0.03509345]
[0.85817934 0.30642866 0.38654506 0.01980823 0.08947374 0.67045185
0.40023845 0.97259466 0.46046158 0.43818511]
[0.02108788 0.78284794 0.39210544 0.70737209 0.69294844 0.50113278
0.16415867 0.29838336 0.09521118 0.74832518]
[0.76483358 0.55966895 0.88143049 0.39842911 0.76445938 0.29011755
0.65311882 0.34509633 0.28306275 0.78555244]
[0.39036742 0.57327435 0.09607757 0.6195993 0.05590364 0.15495825
0.04236545 0.13066749 0.74040154 0.19906226]
[0.1035001 0.22343978 0.68190871 0.782599 0.42178278 0.3395189
0.5830641 0.29792577 0.6847517 0.57117258]
[0.22463793 0.56954224 0.98659375 0.80609581 0.76044268 0.66628508
0.58861037 0.63903257 0.56358177 0.79286617]]
nd2max=nd2.max()
nd2min=nd2.min()
print(nd2max,nd2min)
0.9931699783795565 0.019808226699720377
1.3 创建一个元素为从10到49的ndarray对象,并将所有元素位置反转
a=np.arange(10,50)
print(a)
down=a[::-1]
print(down)
[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]
[49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26
25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10]
1.4 创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0
nd4=np.zeros((10,10))
nd4[0, :] = nd4[9, :] = nd4[:, 0] = nd4[:, 9] = 1
print(nd4)
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
nd4_1=np.ones((10,10))
nd4_1[1:-1,1:-1]=0
print(nd4_1)
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
1.5 创建一个每一行都是从0到4的5*5矩阵
I=[0,1,2,3,4]
nd5=np.array(I*5)
nd5=nd5.reshape(5,5)
print(nd5)
[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
1.6 创建一个范围在(0,10)之间的长度为15的等差数列
nd6=np.linspace(0,10,15)
print(nd6)
[ 0. 0.71428571 1.42857143 2.14285714 2.85714286 3.57142857
4.28571429 5. 5.71428571 6.42857143 7.14285714 7.85714286
8.57142857 9.28571429 10. ]
1.7 创建一个长度为10的随机数组并排序
nd7=np.random.random(10)
print(nd7)
[0.7642248 0.57989547 0.93747947 0.35400782 0.61238838 0.89160774
0.33170533 0.58857917 0.46881695 0.29894106]
nd7=np.sort(nd7)
print(nd7)
[0.29894106 0.33170533 0.35400782 0.46881695 0.57989547 0.58857917
0.61238838 0.7642248 0.89160774 0.93747947]
1.8 创建一个长度为10的随机数组并将最大值替换为0
nd8=np.random.randint(0,20,size=10)
display(nd8)
index_max=nd8.argmax()
print(index_max)
nd8[index_max]=0
display(nd8)
array([ 5, 3, 14, 11, 12, 0, 1, 2, 6, 16])
9
array([ 5, 3, 14, 11, 12, 0, 1, 2, 6, 0])
1.9 给定一个4维矩阵,得到最后两维的和
nd9=np.random.randint(0,100,size=(2,3,3,3))
print(nd9)
[[[[36 95 83]
[26 26 69]
[62 4 80]]
[[51 43 17]
[31 2 96]
[66 58 69]]
[[ 9 22 16]
[ 4 26 40]
[14 97 53]]]
[[[71 57 6]
[37 13 90]
[79 27 84]]
[[99 35 99]
[64 91 4]
[71 90 3]]
[[67 46 10]
[23 60 96]
[20 61 76]]]]
sum9_1=nd9.sum(axis=(2,3))
print(sum9_1)
[[481 433 281]
[464 556 459]]
sum9_2=nd9.sum(axis=(-1,