文章目录
1.numpy模块:shape()
功能:读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。
输入参数:可以是一个整数(表示维度),也可以是一个矩阵。
例子:
- 参数为一个数时,返回空:
- 参数是一维矩阵:
- 参数是二维矩阵:
- 直接用.shape可以快速读取矩阵的形状,使用shape[0]读取矩阵第一维的长度
- 但当某一维度长度不一致时,读取所有维度时则不能读出长短不一致的维度
2.numpy模块:tile()方法
函数形式:tile(A,rep)
功能:重复A的各个维度
参数类型:
- A:Array类的都可以
- rep: A沿着各个维度重复的次数
>>> import numpy
>>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> numpy.tile([0,0],(1,1))#在列方向上重复[0,0]1次,行1次
array([[0, 0]])
>>> numpy.tile([0,0],(2,1))#在行方向上重复[0,0]2次,列1次
array([[0, 0],
[0, 0]])
>>> numpy.tile([0,0],(3,1))
array([[0, 0],
[0, 0],
[0, 0]])
>>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次
array([[0, 0, 0, 0, 0, 0]])
>>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重复[0,0]3次,行2次</span>
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
3.sum(axis=1)
功能:
- sum(axis=0):是将一个矩阵的每一列向量相加
- sum(axis=1):是将一个矩阵的每一行向量相加
- sum():全部相加结果为一个数
>>> import numpy as np
>>> a=np.sum([[0,1,2],[2,1,3]])
>>> a
9
>>> a.shape
()
>>> a=np.sum([[0,1,2],[2,1,3]],axis=0)
>>> a
array([2, 2, 5])
>>> a.shape
(3,)
>>> a=np.sum([[0,1,2],[2,1,3]],axis=1)
>>> a
array([3, 6])
>>> a.shape
(2,)
扩展:
- 类似的还有argmax,sum等等函数,它们都含有一个名为axis的参数,那这个参数到底是什么意思呢?一句话总结就是:沿着axis指定的轴进行相应的函数操作
import numpy as np
#首先,创建一个2×3维的numpy的array数组
x=[[2,3,4],[1,2,5]]
x=np.array(x)
#然后,计算不同参数下np.max的输出
print(np.max(x))
# 5
print(np.max(x,0))
# [2,3,5]
print(np.max(x,1))
# [4,5]
可以看到,如果不知道axis,那么默认就是取得整个数组的最大值,这相当于把多维数组展开成一维,然后找到这个一维数组里的最大值。
而当axis=0时,直观上来看就是取得每一列的最大值,源数组总共为2行3列,所以最终的输出包含3个元素。
当axis=1时,就相当与是取每一行的最大值。
上面的理解方式在二维数组还比较直观,但是如果数组达到3维4维甚至更高维时,就不能简单的从行列角度出发去理解了,这时应该考虑从“轴”的角度来看。首先,明确一点,“轴”是从外向里的,也就是说,最外层的是0轴,往内一次是1轴,2轴… 。 具体可以看下面的例子:
array([[[ 2, 3, 4, 8],
[ 3, 1, 4, 1],
[ 6, 3, 2, 6]],
[[10, 2, 45, 2],
[ 2, 4, 5, 10],
[22, 4, 4, 1]]])
>>> z.shape
(2, 3, 4)
可以看到,这是一个2×3×4的三位数组,其中0轴对应第一维(2),1轴对应第二维(3),2轴对应第三维(4)。当我们指定了函数按某一轴来计算时,函数的输出数组的shape就是去掉当前轴的shape,如下所示。
>>> np.max(z,axis=0).shape
(3, 4)
>>> np.max(z,axis=1).shape
(2, 4)
>>> np.max(z,axis=2).shape
(2, 3)
而对于输出数组的每一个元素output[i][j]的值,实际上就是z[i][…][j]集合中的最大值,如下面的代码所示。其中当axis=0时,输出数组output的shape为3×4,其中output.[2][3]的值,实际上就是z[0][2][3],z[1][2][3]的最大值,也就是(6,1)中的最大值,即为output.[2][3]=6。
再如axis=1时,输出数组output的shape为2×4,其中output.[1][2]的值,实际上就是z[1][0][2],z[1][1][2],z[1][2][2]中的最大值,也就是(45,5,4)中的最大值,即为output.[1][2]=45。
>>> np.max(z,axis=0)
array([[10, 3, 45, 8],
[ 3, 4, 5, 10],
[22, 4, 4, 6]])
>>> np.max(z,axis=1)
array([[ 6, 3, 4, 8],
[22, 4, 45, 10]])
>>> np.max(z,axis=2)
array([[ 8, 4, 6],
[45, 10, 22]])
4.字典的get()方法
- 语法:dict.get(key, default=None)
- 功能:返回指定键的值,如果值不在字典中,则返回默认值
- 参数:
-key:字典中要查找的键
-default:如果指定键不存在时,则返回该默认值None
例子:
输出:
6.sorted()函数
- 功能:对所有可迭代的对象进行排序操作
- sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。 - 语法:sorted(iterable[, cmp[, key[, reverse]]])
- 参数说明:
-iterable – 可迭代对象。
-cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
-key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
-reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。 - 返回值:返回重新排序的列表
例子:
7.字典的items()方法
- items方法是可以将字典中的所有项,以列表方式返回。
- iteritems方法与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器。(python3.X已经取消)
例子:
>>> d = {'1':'one', '2':'two', '3':'three'}
>>> x = d.items()
>>> x
[('1', 'one'), ('3', 'three'), ('2', 'two')]
>>> type(x)
<type 'list'>
>>> y = d.iteritems()
>>> y
<dictionary-itemiterator object at 0x025008A0>
>>> type(y)
<type 'dictionary-itemiterator'>
8.split()方法
- 功能:通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
- 语法:str.split(str="", num=string.count(str))
- 参数:
-str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
-num – 分割次数。默认为 -1, 即分隔所有 - 返回值:返回分割后的字符串列表
例子:
输出:
输出:
9.strip()方法
- 功能:用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 - 语法:str.strip([chars])
- 参数:chars – 移除字符串头尾指定的字符序列
- 返回值:返回移除字符串头尾指定的字符生成的新字符串
例子:
输出:
从结果上看,可以注意到中间部分的字符并未删除。
以上下例演示了只要头尾包含有指定字符序列中的字符就删除:
输出:
10.read、readline和readlines的区别
- read 读取整个文件
- readline 读取下一行
- readlines 读取整个文件到一个迭代器以供我们遍历(读取到一个list中,以供使用,比较方便)
11.dump()
- dump()方法
pickle.dump(obj, file, [,protocol])
注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,file必须有write()接口,file可以是一个以’w’打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。
- load()方法
pickle.load(file)
注释:反序列化对象,将文件中的数据解析为一个python对象。file中有read()接口和readline()接口