Python手记
python异常处理
zip
a = np.array(['a', 'b', 'c', 'd'])
b = np.array([2,4,6,8,10])
for i1, i2 in zip(a, b):
print("{}, {}".format(i1, i2))
zip用于将数组对象打包,可以用于遍历等操作。
numpy库中的random
1 import numpy.random as rnd
2 rnd.rand(row_num, col_num) #随机生成row_now行,col_num列的二维数组(矩阵)
3 rnd.random(num) #随机生成num个数(小于1的)
4 rnd.randn(row_num, col_num) #数据满足正态分布,随机生成row_now行,col_num列的二维数组(矩阵)
python参数中的*和**
def method(* args, ** kwargs)
args的格式是元组:method("first parameter", "second parameter"...)
kwargs的格式是字典的:method(firstParam="first parametger", secondParameter="second paramerter“ ...)
数据转化为float
从文件中获取数据,如果转成numpy的array默认是String类型,如果转化为float?
1 datas=array(line.split()) 2 datas=datas.astype(np.float)
注意这里astype并不会改变当前数组,而是改变返回值的数据类型;所以需要有一个接收值。
nonzero
1 from numpy import nonzero
2 x=array([[1,0,0], [0,2,0], [1,1,0]])
3 print(x)
4 nonzero(x)
output:
[[1 0 0] [0 2 0] [1 1 0]] (array([0, 1, 2, 2], dtype=int64), array([0, 1, 0, 1], dtype=int64))
1 ar = array([[1,2],[4,3],[2,3],[0,1]]) 2 br = ar.argsort(0) 3 br
输出的为:
这里大家注意了,ar的形式如下:
0) 1 2
1) 4 3
2) 2 3
3) 0 1
axis=0就是代表沿着纵向进行排序(从小到大),3)排名第一,0)排名第二,2)排名第三...,所以我们看到返回值,第一列是3,0,2,1;第二个维度(特征)继续排序,但是第二个维度排序,第二个维度值是2,3,3,1,下面对于这四个数进行排序,最小的索引是3),第二个小的索引0)一次类推;分别对于两个维度的特征进行了排序。所以可以理解axis=0就是基于特征的排序。
那么axis=1呢?那就是横向排序,即按照行进行排序:
1 ar = array([[1,2],[4,3],[2,3],[0,1]]) 2 br = ar.argsort(1) 3 br
返回值:
array([[0, 1],
[1, 0],
[0, 1],
[0, 1]], dtype=int64)
按照行来进行排序,或者说只是行内进行排序,上面的argsort(0)则是列内进行排序,可以这么理解,argsort(1)是样本内部各个特征值的排序,argsort(0)则是样本间的特定特征值的排序。
python plot中的数组
import numpy arr = numpy.array([[1,2,3],[7,8,9]]) print(arr) from matplotlib import pyplot as plt plt.figure(figsize=(12, 4)) plt.plot(arr) plt plt.show()
输出如下: