《数据科学技术与应用》(电工版)学习总结:1.1 NumPy库与多维数组ndarry

前言:笔者所用教材为电子工业的《数据科学技术与应用》,基本知识在课本中都有涉及,此处仅仅是记录个人学习历程中个人觉得有必要记录的知识点,主要用于今后考试复习。如有错误,欢迎提出

目录

1.1.1 一维ndarray对象
1.1.2 二维ndarray对象
1.1.3 创建多维数组的常用方法

1.1.1 一维ndarray对象

1.数组属性

常用的数组属性如下:

属性注释
size查看数组元素个数,就一维数组而言,size的用法类似于len函数
ndim全称大概是ndarray dimension,查看数组维度
dtype查看数组数据类型,到目前对我而言还有没实际用途
2.元素的访问与切片

一维数组的访问与切片同Python序列的访问与切片相同,都是中括号【】的使用,这里不加赘述

3.根据条件筛选数组元素

先给结论

>>>num = np.array([1,2,3,4])
>>>num[ (num == 1) | (num = 2)]
array(['1','2'], dtype='int32')

再给过程

<略> (狗头保命)

1.1.2 二维ndarray对象

1.数组属性

常用属性与一维数组基本相同,不同的是多了shape属性:

属性注释
size元素总数 = 行数 * 列数
shape查看数组的行数与列数

shape这个词比较重要,跟后面创建多维数组的一个方法有点关系

2.元素的访问与切片
二维数组访问或切片操作的基本格式:arr[ row(list) , column(list) ]

• row行序号,column列序号,中间用‘,’隔开
• 行、列切片的表示方式与一维数组相同
•用“:”代替行或列,表示选中对应的所有行或列

切片的各种方式中有一种情况比较特别:
>>> scores= np.array([[70,85,77,90,82,84,89],
[60,64,80,75,80,92,90],
[90,93,88,87,86,90,91][80,82,91,88,83,86,80],
[88,72,78,90,91,73,80]])
>>> scores[[1,3],[0,1]]   #抽取scores[1,0],scores[3,1]
array([60, 82])

当出现arr[ rowlist , columnlist ]时,ndarray的切片方式与后续出现的DataFrame的切片方式略有不同:

ndarrayDataFrame
抽取scores[1, 0],scores[3, 1]抽取scores[1, [0, 1] ],scores[3, [0, 1] ]
3.根据条件筛选数组元素

(与一维数组的条件筛选相同)

1.1.3 创建多维数组的常用方法

1.arange()函数

注意是arange不是arrange

arange函数用于创建等差数组,跟range函数类似,不同之处有两个:
1.使用前,arange需要引入numpy。
2. arange返回一个数据而不是list。

np.arange(start, stop, step, dtype) start:起始值,可忽略不写,默认从0开始;
stop:结束值,生成的元素不包括结束值;
step:步长,可忽略不写,默认为1;
dtype:设置显示元素的数据类型,默认为None。

下面是arrange函数的一些基本的用法:

  1. 一个参数时,参数值为终点,起点取默认值0,步长取默认值1

  2. 两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1

  3. 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数

>>> a=np.arange(5)
[0 1 2 3 4]
>>> b1=np.arange(1,5)
[1 2 3 4]
>>> c=np.arange(1,10,2)
[1 3 5 7 9]

此外,arange()函数的3个参数还可以是浮点数

>>> np.arange(0.3,1.5,0,3)
array([ 0.3, 0.6, 0.9, 1.2])
2.reshape()函数

改变数组的形状,并且原始数据不发生变化。但是,reshape()函数中的参数需要满足乘积等于数组中数据总数。
如:当我们将8个数使用(2,3)重新排列时,python会报错

而,shape()函数则用于读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,相当于行数。它的输入参数可以是一个整数表示维度,也可以是一个矩阵。shape函数返回的是一个元组tuple,表示数组(矩阵)的维度/ 形状,例子如下:

  • w.shape[0]返回的是w的行数
  • w.shape[1]返回的是w的列数
  • df.shape():查看行数和列数
  1. 数组(矩阵)只有一个维度时,shape只有shape[0],返回的是该一维数组(矩阵)中元素的个数,通俗点说就是返回列数,因为一维数组只有一行,一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维就使用[ ]
>>> a=np.array([1,2])  #也可以写成 a=np.array((1,2)) 
>>> a
array([1, 2])
>>> a.shape
(2L,)
>>> a.shape[0]
2L
>>> a.shape[1]
IndexError: tuple index out of range   #最后报错是因为一维数组只有一个维度,可以用a.shape或a.shape[0]来访问
 
#这个使用的是两个()包裹,得到的数组和前面的一样
>>> a=np.array((1,2))
>>> a
array([1, 2]) 
  1. 数组有两个维度(即行和列)时,a.shape返回的元组表示该数组的行数与列数

arange函数和reshape函数还可以一起使用:

In [8]: np.arange(1,12,2).reshape(3,2)
Out[8]: array([[ 1,  3],
       [ 5,  7],
       [ 9, 11]])
3.zeros()和ones()函数

生成指定大小的全0和1的数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值