- NumPy对象:数组
reshape
ndim"查看维度;
shape"查看各维度的大小;
size查看全部的元素个数,等于各维度大小的乘积;
dtype"可查看元素类型;"dsize"查看元素占位(bytes)大小```
- 创建数组
raw = [0,1,2,3,4]
a = np.array(raw)
np.zeros()
np.ones(d, dtype=int)
np.random.rand(5)```
- 数组操作
'+','-','','/'运算都是基于全部的数组元素的
类似C++,'+='、'-='、'='、'/='操作符在NumPy中同样支持
开根号求指数
'''a.sum()
a.max()
a.min()
a.max(axis=1) 行最大值
a.min(axis=0) 列最小值'''
数组可以通过asmatrix或者mat转换为矩阵,或者直接生成也可以:
a = np.arange(20).reshape(4, 5)
a = np.asmatrix(a)
print type(a)
b = np.matrix('1.0 2.0; 3.0 4.0')
print type(b)
arange(起始,终止,步长)
linspace(起始,终止,长度)
- 数组元素访问
a = np.array([[3.2, 1.5], [2.5, 4]])
print a[0][1]
print a[0, 1]
下标访问来修改数组元素的值
b = a
a[0][1] = 2.0 b和a一起变 浅复制
a = np.array([[3.2, 1.5], [2.5, 4]])
b = a.copy()
a[0][1] = 2.0 a变b不变
':'可以访问到某一维的全部数据
a[:,[1,3]]
。下面这个例子是将第一列大于5的元素(10和15)对应的第三列元素(12和17)取出来
a[:, 2][a[:, 0] > 5]
where函数查找特定值在数组中的位置
loc = numpy.where(a==11)
print loc
print a[loc[0][0], loc[1][0]]
a[a>4] 访问大于4的数据
- 数组操作
np.transpose()
mat.T
求逆
import numpy.linalg as nlg
a = np.random.rand(2,2)
a = np.mat(a)
ia = nlg.inv(a)
修剪异常值:
a.clip(0,4) 将大于4的数据变为4 小于0的数据变为0
求特征值和特征向量
eig_value, eig_vector = nlg.eig(a)
按列拼接两个向量成一个矩阵:
a = np.array((1,2,3))
b = np.array((2,3,4))
print np.column_stack((a,b))
c = np.hstack([a,b])水平连接
d = np.vstack([a,b])竖直连接```
- 缺失值
a = np.random.rand(2,2)
a[0, 1] = np.nan
print np.isnan(a)
a = np.random.rand(2,2)
a[0, 1] = np.nan
print np.isnan(a) nan替换成0
a[~np.isnan(a)] 取出a中非异常值
网友评论