python 列表、字典、numpy小知识点摘录

 

列表和字典操作区别:

python 列表、字典、numpy小知识点摘录

列表条件循环推导式:[输出值 for 条件] :

[x*x for x in range(10) if x%3==0]

 

numpy的arange和linspace 

import numpy as np

arange(i,j,k)   第三个参数的k为步长

如:b = np.arange(2, 45, 3).reshape(5, 3)

如果指定一维数组的长度,则使用linspace,

如:b=linspace(0,2,9),即在0到2之间均分后生成9个元素值。

 

二维数组sum、max、min:

a.sum()

a.max()

 a.min()

合计数最大的行:a.max(axis=1)

合计数最大的列:a.max(axis=0)

 

矩阵:

引入模块:

import numpy as np

矩阵对象和数组的主要有两点差别:一是矩阵是二维的,而数组的
可以是任意正整数维;二是矩阵的 * 操作符进行的是矩阵乘法,乘号左侧的矩阵
列和乘号右侧的矩阵行要相等,而在数组中 * 操作符进行的是每一元素的对应相
乘,乘号两侧的数组每一维大小需要一致。数组可以通过 asmatrix 或者 mat 转
换为矩阵,或者直接生成也可以。

举例:

1,

a = np.arange(20).reshape(4, 5)
a = np.asmatrix(a)   

或 a=mat(a) 

2,

a = np.matrix('1.0 2.0; 3.0 4.0')    ---->注意格式,中间为' ; '号(分号)

 

数组元素的访问:

可以通过下标访问来修改数组元素的值,

如:

a = np.array([[3.2, 1.5], [2.5, 4]])
a[0][1]  或  a[0, 1]

数组的链接:b=a

b与a指向同一地址,修改任意一个数组,另一个数组也随之变动。

数组的复制:b=a.copy(),重新开辟一个地址给b,ab分别指向不同地址。

 

访问某一维的数组:

a[:,[1,3]]   ---->第2列和第4列

a[:, 2][a[:, 0] > 5]    ---->将第一列大于5的元素所对应的第三列元素取出来

np.where(a==11)     ---->查找元素为11的位置

 

数组的转置:np.transpose(a)

 

矩阵的转置:b.T

 

矩阵求逆:

import numpy.linalg as nlg
a = np.random.rand(2,2)
a = np.mat(a)

ia = nlg.inv(a)

a:
[[ 0.86211266 0.6885563 ]
[ 0.28798536 0.70810425]]
inverse of a:
[[ 1.71798445 -1.6705577 ]
[-0.69870271 2.09163573]]
a * inv(a)
[[ 1. 0.]
[ 0. 1.]]

求特征值和特征向量
a = np.random.rand(3,3)
eig_value, eig_vector = nlg.eig(a)
print "eigen value:"
print eig_value
print "eigen vector:"
print eig_vector
eigen value:
[ 1.35760609 0.43205379 -0.53470662]
eigen vector:
[[-0.76595379 -0.88231952 -0.07390831]
[-0.55170557 0.21659887 -0.74213622]
[-0.33005418 0.41784829 0.66616169]]