前言:笔者所用教材为电子工业的《数据科学技术与应用》,基本知识在课本中都有涉及,此处仅仅是记录个人学习历程中个人觉得有必要记录的知识点,主要用于今后考试复习。如有错误,欢迎提出
目录
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的切片方式略有不同:
ndarray | DataFrame |
---|---|
抽取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函数的一些基本的用法:
-
一个参数时,参数值为终点,起点取默认值0,步长取默认值1
-
两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1
-
三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数
>>> 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():查看行数和列数
- 数组(矩阵)只有一个维度时,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])
- 数组有两个维度(即行和列)时,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的数组