今天师兄师姐给我们讲了numpy的一些简单的知识点,接下来的内容是我对学习内容的体现:
目录
1.用numpy创建数组:
1)随机选取数组成数组:
import numpy as np
import random
a = np.random.randint(1,10,size = (3,3)) #在[1,9)之间随机抽取9个数字组成3行3列的数组
a #生成数组
array([[5,9,6],
[2,7,1],
[6,3,1]]) #由两个中括号括起来,为2维
2)创建一个元素有序排好的列表:
a5 = np.arange(40).reshape(5,8) #创建一个从0到39的五行八列的数组
a5
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9,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]])
2.使用函数创建特殊数组:
1)创建一个所有元素都为0的数组:
a1 = np.zeros((3,4)) #生成一个所有元素都为0的三行四列的数组
a1
array([[0.,0.,0.,0.],
[0.,0.,0.,0.],
[0.,0.,0.,0.]])
2)创建一个元素都为1的数组:
a2 = np.ones((2,3)) #创建一个元素都为一的2行3列的数组。
a2
array([[1.,1.,1.],
[1.,1.,1.]])
3)创建一个元素都为指定元素的数组:
a3 = np.full((4,2),8) #创建一个元素都为8的4行2列的数组。
a3
array([[8.,8.],
[8.,8.],
[8.,8.],
[8.,8.]])
4)创建一个在斜方形上元素都为1,其他元素都为0的矩阵:
a4 = np.eye(4) #创建一个除了斜方形上为1,其他元素都为0的4 x 4的矩阵
a4
array([[1.,0.,0.,0.],
[0.,1.,0.,0.],
[0.,0.,1.,0.],
[0.,0.,0.,1.]])
3.获取数组维度的方法:
用x.shape来获取的维度,获取数组有几行几列。数组由多少个中括号括起来,它就是几维。
a.shape
运行结果:
(3,3)
4.获取数据:从0开始计数
1)获取某行数据:
a4[2] #获取第3行数据
array([0.,0.,1.,0.])
2)获得某连续几行的数据:切片遵循顾头不顾尾原则
a4[1:3] #获取2到3行的形式
array([[0.,1.,0.,0.],
[0.,0.,1.,0.]])
可以先将所取行数范围先写出来:[2,3],再遵循顾头不顾尾原则:(2,4),再遵循从零开始原则:(1,3),再变为切片形式[1:3]
3)获取某个数据:
a4[0,0] #获取第一行第一个(列)的数据
1.0
4)在数组中获取符合条件的元素:
eg:在a5的前三行的第7列中选取大于15的数:
a5
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9,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]])
b = a[0:3,6] #将前三行的7列的数赋给b
b[b > 15] #借助布尔来选出大于15的数
array([22])
但是b本身是不改变的:
b
array([6,14,22])
5.改变数组的维度
1)不改变原数组而改变数组维度:
a.reshape(1,9) #将a转化为1列9行的形式
array([[5,9,6,2,7,1,6,3,1]])
但是原数组还是只是用这个函数输出的时候改变了,但本质不变:
a
array([[5,9,6],
[2,7,1],
[6,3,1]])
若想获取改变后的数组,可将其储存于b中:
b = a.reshape(1,9) #将a转化为1列9行的形式
b
array([[5,9,6,2,7,1,6,3,1]])
2)直接改变该原数组维度:
直接把a改变了:
a.resize = (1,9) #将a转换为一列九行的形式
a
array([[5,9,6,2,7,1,6,3,1]])
6.值得替换:
1)替换数组中得某个值:
a5
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9,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]])
a5[0,0] = 100 #将a5第一行的第一个数改为100
a5
array([[100, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 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]])
直接改变a5
2)替换某行的值
替换为同一元素
a5[1] = 0 #将a5中的第2行的所有元素替换为0
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 0, 0, 0, 0, 0, 0, 0, 0],
[ 16, 17, 18, 19, 20, 21, 22, 23],
[ 24, 25, 26, 27, 28, 29, 30, 31],
[ 32, 33, 34, 35, 36, 37, 38, 39]])
替换为列表内的值:
a5[1] = [250,520,521,251,666,888,778,992]
a5
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[250,520,521,251,666,888,778,992],
[ 16, 17, 18, 19, 20, 21, 22, 23],
[ 24, 25, 26, 27, 28, 29, 30, 31],
[ 32, 33, 34, 35, 36, 37, 38, 39]])
3)替换列表内某几行的值:
a5[0:2] = 1 #将a5中前两行的元素替换为1
a5
array([[ 1, 1, 1, 1, 1, 1, 1, 1],
[ 1, 1, 1, 1, 1, 1, 1, 1],
[ 16, 17, 18, 19, 20, 21, 22, 23],
[ 24, 25, 26, 27, 28, 29, 30, 31],
[ 32, 33, 34, 35, 36, 37, 38, 39]])
4)将数组中的所有元素改为某个特定元素:
a5[:] = 6 #将列表中的所有元素替换为6
a5
array([[ 6, 6, 6, 6, 6, 6, 6, 6],
[ 6, 6, 6, 6, 6, 6, 6, 6],
[ 6, 6, 6, 6, 6, 6, 6, 6],
[ 6, 6, 6, 6, 6, 6, 6, 6],
[ 6, 6, 6, 6, 6, 6, 6, 6]])
7.数据的拼接:
1)垂直拼接:
vstack:垂直拼接,数组列数相同才能拼接
import numpy as np #导入模块
import random
b1 = np.random.randint(1,10,size = (1,4)) #创建数组
b2 = np.random.randint(1,10,size = (2,4))
b3 = np.vstack([b1,b2]) #垂直拼接数组
b3
array([[1,8,6,2],
[7,5,4,6],
[4,1,8,6]])
2)水平拼接:
hstack:水平拼接,数组的行数要相等才能拼接
import numpy as np #导入模块
import random
c1 = np.random.randint(1,10,size = (2,1)) #创建数组
c2 = np.random.randint(1,10,size = (2,3))
c3 = np.hstack([b1,b2]) #垂直拼接数组
c3
array([[6,8,9,8],
[5,6,2,9]])
8.转置:
c3.T #将列转为行,将行转为列
array([[6,5],
[8,6],
[9,2],
[8,9]])