Python-numpy
来源:互联网 发布:淘宝账号为什么会被盗 编辑:程序博客网 时间:2024/05/17 09:40
1.数组特征信息:
NumPy的数组类被称作ndarray。通常被称作数组。
ndarray是一个同种类数据的多维容器,也就是说,它的所有元素都是同类型的。
每一个数组都有一个 shape (表示它每一维大小的元组)和 dtype (一个描述数组数据类型的对象):
ndarray.ndim
数组轴的个数,在python的世界中,轴的个数被称作秩
数组的维度。
这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性
import
numpy as np
x
=
np.array([[
1
,
2
,
5
],[
2
,
3
,
5
],[
3
,
4
,
5
],[
2
,
3
,
6
]])
# 输出数组的行和列数
print
x.shape
# (4, 3)
# 只输出行数
print
x.shape[
0
]
# 4
# 只输出列数
print
x.shape[
1
]
# 3
ndarray.size
数组元素的总个数,等于shape属性中元组元素的乘积。
ndarray.dtype
一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
import numpy as npndarray.itemsize
数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).
ndarray.data
包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。
X.T
X.trace()
np.linalg.det(a)
np.linalg.norm(a,ord=None)
np.linalg.eig(a)
np.linalg.cond(a,p=None)
np.linalg.inv(a)
np.linalg.pinv(a)
array
函数从常规的Python列表和元组创造数组。所创建的数组类型由原序列中的元素类型推导而来。y=np.array([[1,1,1],[2,2,0],[1,0,0]])
print "y array is:\n",y
print "y array's dimision is:",y.shape
print "y array's ndim is:",y.ndim
print "y array's size is:",y.size
In [17]: arr2 = np.array(data2)
Out[23]: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
In [25]: np.empty((2, 3, 2))
Out[25]:
array([[[ 4.94065646e-324, 4.94065646e-324],
[ 3.87491056e-297, 2.46845796e-130],
[ 4.94065646e-324, 4.94065646e-324]],
[[ 1.90723115e+083, 5.73293533e-053],
[ -2.33568637e+124, -6.70608105e-012],
[ 4.42786966e+160, 1.27100354e+025]]])
Out[32]: dtype('int64')
In [33]: float_arr = arr.astype(np.float64)
In [34]: float_arr.dtype
Out[34]: dtype('float64')
In [38]: numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)In [39]: numeric_strings.astype(float)Out[39]: array([ 1.25, -9.6 , 42. ])
返回一个list对象,起始值为start,终止值为end,但不含终止值,步长为step。只能创建int型list。
2)arange(start, end, step):
与range()类似,但是返回一个array对象。需要引入import numpy as np,并且arange可以使用float型数据。
print "z array is:\n",z
print "p is:\n",p
#也可以ndarray.sum(axis),分别求每一行或者是每一列的元素之和,axis=0,纵向运算,axis=1,横向运算
print "y1=:\n",y.sum(1)
print "x*3=:\n",x
6.索引,切片和迭代
一维 数组可以被索引、切片和迭代,就像 列表 和其它Python序列。
>>> a = arange(10)**3
>>> a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])
>>> a[2]
8
>>> a[2:5]
array([ 8, 27, 64])
>>> a[:6:2] = -1000 ——> # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000
>>> a
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])
>>> a[ : :-1] ——> # reversed a
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])
In [96]: data[data < 0] = 0In [97]: dataOut[97]:array([[ 0. , 0.5433, 0. , 1.2792], [ 0. , 0.5465, 0.0939, 0. ], [ 0. , 0. , 0.7719, 0.3103], [ 2.1452, 0.8799, 0. , 0.0672], [ 0. , 0. , 1.1503, 1.7289], [ 0.1913, 0.4544, 0.4519, 0.5535], [ 0.5994, 0.8174, 0. , 0. ]])
9.更改数组类型函数:
reshape 改变形状
transpose 转置
swapaxes 调换维度
print "b2/n",b2
b3=np.eye(5,M=None,k=0)#建立一个对角线是1其余值为0的矩阵,用k指定对角线的位置。M默认None。
print "b3/n",b3
2)矩阵相关操作
创建矩阵:np.mat(‘…’)通过字符串格式创建,np.mat(a)通过数组创建,也可用matrix或bmat函数创建
创建复合矩阵:np.bmat(‘A B’,’AB’),用A和B创建复合矩阵AB(字符串格式)
创建n*n维单位矩阵:np.eye(n)
矩阵的转置:A.T
矩阵的逆矩阵:A.I
计算协方差矩阵:np.cov(x),np.cov(x,y)
计算矩阵的迹(对角线元素和):a.trace()
相关系数:np.corrcoef(x,y)
给出对角线元素:a.diagonal()
3)线性代数
numpy.linalg 有一个关于矩阵分解和像转置和行列式等的一个标准集合:
如 :矩阵乘法(点积):x.dot(y) # equivalently np.dot(x, y)
估计线性模型中的系数:a=np.linalg.lstsq(x,b),有b=a*x
求方阵的逆矩阵:np.linalg.inv(A)
求广义逆矩阵:np.linalg.pinv(A)
求矩阵的行列式:np.linalg.det(A)
解形如AX=b的线性方程组:np.linalg.solve(A,b)
求矩阵的特征值:np.linalg.eigvals(A)
求特征值和特征向量:np.linalg.eig(A)
Svd分解:np.linalg.svd(A)
4).多项式
多项式拟合:poly= np.polyfit(x,a,n),拟合点集a得到n级多项式,其中x为横轴长度,返回多项式的系数
多项式求导函数:np.polyder(poly),返回导函数的系数
得到多项式的n阶导函数:多项式.deriv(m = n)
多项式求根:np.roots(poly)
多项式在某点上的值:np.polyval(poly,x[n]),返回poly多项式在横轴点上x[n]上的值
两个多项式做差运算: np.polysub(a,b)
- Python Numpy
- [python]numpy
- python numpy
- Python Numpy
- python numpy
- python ---numpy
- Python---Numpy
- Python--numpy
- Python Numpy
- python numpy
- python numpy
- Python numpy
- Python-numpy
- python-numpy
- python numpy
- python-numpy
- python numpy
- Python-NumPy
- docker remote api 调用
- HDU-6070 Dirt Ratio
- uvalive 4329 Ping Pong(树状数组)
- Uboot到底如何启动内核
- 距离变换distanceTransform应用——寻找图像的质心
- Python-numpy
- Easyui-combobox使用
- MySql操作
- 数据库设计
- 清晰明了告诉你RequireJS 的使用。
- bootstrap中多个modal之间的切换
- 安装以及配置Maven
- 懒虫小鑫
- MySQ四种L事务隔离级别