numpy的初步学习

今天师兄师姐给我们讲了numpy的一些简单的知识点,接下来的内容是我对学习内容的体现:

目录

1.用numpy创建数组:

1)随机选取数组成数组:

2)创建一个元素有序排好的列表:

2.使用函数创建特殊数组:

1)创建一个所有元素都为0的数组:

2)创建一个元素都为1的数组:

3)创建一个元素都为指定元素的数组:

4)创建一个在斜方形上元素都为1,其他元素都为0的矩阵:

3.获取数组维度的方法:

4.获取数据:从0开始计数

1)获取某行数据:

2)获得某连续几行的数据:切片遵循顾头不顾尾原则

3)获取某个数据:

4)在数组中获取符合条件的元素:

5.改变数组的维度

1)不改变原数组而改变数组维度:

2)直接改变该原数组维度:

6.值得替换:

1)替换数组中得某个值:

2)替换某行的值

替换为同一元素

替换为列表内的值:

3)替换列表内某几行的值:

4)将数组中的所有元素改为某个特定元素:

7.数据的拼接:

1)垂直拼接:

2)水平拼接:

8.转置:


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值