py numpy库
来源:互联网 发布:网上怎么开淘宝店 编辑:程序博客网 时间:2024/06/03 14:30
1.简介
用于矩阵等的科学计算.
可通过 pip install numpy
安装.
通过import numpy as np
引入.
矩阵一般用ndarray表示.
ndarray, N-dimensional array object.
2. 构造多维数组
- 均匀分布
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
指定区间与采样个数, 返回均匀间隔的数组. - 指定元素
手动拼好放到array()
的构造函数中. - 单位矩阵
np.eye(3)
- 全1矩阵
np.ones((2,3))
- 0型矩阵
np.zeros(shape, dtype=float, order='C')
- 指定规则
tile(A, reps)
将A矩阵当作一个元素, 按照重复规则生成新的复合矩阵.如
arr=np.tile([[1,2],[3,4]], [2,3])print arr"""[[1 2 1 2 1 2] [3 4 3 4 3 4] [1 2 1 2 1 2] [3 4 3 4 3 4]]"""
2.1 ndarray的shape
print np.array([1,2]).shape #(2L,)print np.array([[1,2]]).shape #(1L, 2L)# 注意这两种的区别, 前者是一维数组, 后者是二维数组.
- reshape
np.reshape(a, newshape, order='C')
调整ndarray的尺寸. 若shape 中某个分量是-1, 代表着这一维度的尺寸会自动计算.
如 a = np.arange(6).reshape((3, 2))
或 a = np.arange(6).reshape((3, -1)), 得到
array([[0, 1],
[2, 3],
[4, 5]])
2.2 ndarray的axis
ndarray是多维的, axis=i 就指定了第i个维度. 很多计算函数都有axis参数可以指定, 得到不同的计算结果.
对于2维数组, 如果axis=0,则沿着纵轴进行操作;axis=1,则沿着横轴进行操作。但如果是多维的呢?可以总结为一句话:设axis=i,则numpy沿着第i个下标变化的方向进行操作。
#axis参数对计算结果的影响aOut[178]: array([[1, 2], [3, 4], [5, 6]])np.mean(a,axis=0)Out[179]: array([ 3., 4.])np.mean(a,axis=1)Out[180]: array([ 1.5, 3.5, 5.5])np.mean(a)Out[181]: 3.5
3.矩阵截取
arr[截取表达式]. 用法见图3-1 .
图3-1 ndarray截取示意图
4.random 类
from numpy import random
4.1常用函数
random.standard_normal(size)
Draw samples from a standard Normal distribution (mean=0, stdev=1), 即标准正态分布.
random.uniform(a,b)
Get a random number in the range [a, b). By default, it’s [0,1)
random.randint(low, high=None, size=None, dtype=’l’)
产生[low,high)范围的int型随机数. 返回类型为int 或 ndarray.
random.choice(a, size=None, replace=True, p=None)
从一维数组a中按均匀分布作随机采样.
4.2例子
from numpy import randomarr=random.standard_normal((2,3))print(arr.__class__,'\n',arr)num = random.uniform(0,1)print(num.__class__,num)"""<class 'numpy.ndarray'> [[ 0.27243397 -0.83744812 -0.33860031] [-1.36952477 -1.06641186 -0.4565501 ]]<class 'float'> 0.06643459053873624"""
5.常用运算
- 常用运算
# 这些常用运算既可以对一个数计算, 也可以对 数组,矩阵中 每一个元素分别计算np.tanh(x) #求双曲正切np.sqrt(x) #求平方根np.log(x) #求e为底的对数np.log2(x) #求2为底的对数np.log10(x) #求10为底的对数np.power(a,b) # 求a^b
- 度&弧度
np.sin()"""角度(angle) 有两种表示,度(degree) 和 弧度(radian). 弧度:度 = pi:180 = 3.1415:180这里计算的是弧度.所以想计算正弦30°需要np.sin(30*np.pi/180)"""
- argmax(a,axis=None)
找出最大元素的下标.
详细参考: scipy-numpy.argmax - 数组的常用统计指标
x = (0,1,5)np.var(x) # 方差=4.66np.mean(x) # 均值=2np.std(x) # 标准差,即 np.sqrt(np.var(x))
- 矩阵属性
import numpy as npline1=(1,2,3)line2=(4,5,6)# 打印矩阵arr=np.array([line1,line2])print arrprint arr.ndim,#秩print arr.I,#逆矩阵print arr.inverse(),#逆矩阵print arr.transpose(),#逆矩转置print arr.T,#逆矩转置print arr.size ,#元素个数print arr.shape ,#矩阵大小,2*3print type(arr)
- 矩阵运算
#coding=utf-8import numpy as npa=np.array([[1,2], [3,4]])b=np.array([[5,6], [7,8]])print a+b #对应元素相加print a-b #对应元素相减print np.dot(a,b) #矩阵乘法print a*b #对应元素相乘print a**2 #每个元素求平方print a.sum() #所有元素相加,得到一个type 'numpy.int32'print a.sum(axis=0) #每列元素相加print a.sum(axis=1) #每行元素相加
- 余弦相似度
import numpy as np# 勾三弧四的直角三角形的两条边a = np.array([3, 0])b = np.array([3, 4])sim = np.dot(a.T, b) / (np.linalg.norm(a) * np.linalg.norm(b))print('cosine <a,b> : {0}'.format(sim))"""cosine <a,b> : 0.6"""
6. ndarray与matrix
凡是用能matrix的应该都能用ndarray.
ndarray可以是多维的, 而matrix只能是二维的. matrix.I
矩阵的逆 mat1*mat2
矩阵的乘法.
- 例子
#coding=utf-8import numpy as nparr1=np.array([[1,2], [3,4]])arr2=np.array([[1,2], [3,4]])mat1=np.matrix(arr1)mat2=np.matrix(arr2)print mat1*mat2 #矩阵乘法,对应np.dot(a,b)print ('Inverse',mat1.I) #矩阵的逆
- py numpy库
- py-安装numpy
- <PY><Numpy><Scipy>调整音量
- NumPy基本运算 ##ReverseColor_img.py
- NumPy 上手一个例子 vectorsum.py
- <PY><NumPy><SciPy>图像翻转切割遮罩
- numpy库
- Numpy库
- numpy库
- numpy库
- numpy库
- Py第二十二问 from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl
- py matplotlib库
- py scikit-learn 库
- py pandas 库
- py pypinyin 拼音库
- python中的numpy库的numpy.asarray
- py
- Scala001--简单介绍
- Web 编程I
- 框架(手动@班里的同学)
- 阐述struts2的执行流程。
- 【docker 17 源码分析】 Docker Daemon启动
- py numpy库
- servlet生成图形验证码
- spring 使用tomcat自带的dbcp数据源,如何查找配置参数
- SpringMVC 一个Action中,写多个类似的业务控制方法
- 17-03-11
- Java后台埋点统计
- L2-008. 最长对称子串
- JS技巧:调用iframe中父页面/子页面中的JavaScript方法
- 错误Exception raised during rendering: Circular dependencies cannot exist in RelativeLayout