您的位置:首页 > 编程语言 > Python开发

python的numpy学习教程

2017-05-30 22:30 309 查看
Numpy优势:numpy数组中元素类型必须一致,因此方便计算存储空间的大小。numpy运行向量化运算来处理整个数组,完成同样的任务,python的列表通常必须借助循环语句遍历列表,并对诸葛元素进行相应的处理。numpy使用优化过的c API,处理速度非常快。

numpy的元素从下标0开始。

安装:
pip install numpy


安装anaconda可以将Python常用的库都安装进去,免去一个个安装依赖项问题。

下面介绍具体的规则与代码:

1.创建一维数组arange()

a = numpy.arange(5, dtype = uint16)


2.查看数据的类型

a.dtype()


3.查询每一维的长度,查询多维数组的形状

a.shape
a.shape[0]


4.创建多维数组

m = numpy.array([numpy.arange(2),numpy.arange(2)])


使用array()创建数组时,必须传递一个数组类型的对象,例如python的列表。上例为两个数组组成的列表。

5.选择NumPy数组元素

a = numpy.array([[1,2],[3,4]]);
b = a[m,n]


**6.**Numpy数据类型

bool 用一位存储的布尔类型(值为TRUE或FALSE)

inti 由所在平台决定其精度的整数(一般为int32或int64)

int8 整数,范围为-128至127

int16 整数,范围为-2 768至32 767

int32 整数,范围为-231至231 -1

int64 整数,范围为-263至263 -1

uint8 无符号整数,范围为0至255

uint16 无符号整数,范围为0至65 535

uint32 无符号整数,范围为0至232-1

uint64 无符号整数,范围为0至264-1

float16 半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数

float32 单精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数

float64或float 双精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数

complex64 复数,分别用两个32位浮点数表示实部和虚部

complex128或complex 复数,分别用两个64位浮点数表示实部和虚部

in:numpy.float(42)
out:42.0
in:numpy.bool(42)
out:True


类型转换,不允许将复数类型转换为整数,不允许将复数转为浮点数,可将浮点数转为复数complex(1.0),可通过real跟imag取复数的实部虚部。

a = numpy.arange(5,dtype = 'uint16')


许多函数带有一个指定数据类型的参数。

7.数据类型占用的字节数

a.dtype.itemsize


**8.**dtype构造函数

numpy.dtype('f8')


第一个字符表示数据类型,第二个字符表示占用字节数。

9.获取字符码

in:t = numpy.dtype('float64')
in:t.char
out:'d'


10.一维数组切片

a = numpy.arange(10)
a[2:7:2]


从下标2到7,每次下标递增2。

11.数组扩维

a = numpy.arange(24).reshape(2,3,4)


a = numpy.arange(24)
a.shape = (4,6)


a = numpy.arange(24)
a.resize(12,2)


resize
shape =
会改变原数组的结构,
reshape
不会改变原数组。

2*3*4=24。数目需要匹配。将一维数组扩充为,2×3×4维。

12.降维

b = a.ravel()


b = a.flatten()


将数组拉成一维。

13.转置

b.transpose()


14.水平堆叠

将两个相同行数的二维数组水平拼接。

numpy.hstack((a,b))




numpy.concatenate((a,b),axis=1)


15.垂直叠加

numpy.vstack((a,b))




numpy.concatenate((a,b),axis=0)


16.深度叠加

沿着第三个坐标轴(纵向)的方向叠加一摞数组。可以理解为,在一个图像数据的二维数组上叠加另一幅图像的数据。

numpy.dstack((a,b))


17.列式堆叠&行式堆叠

numpy.column_stack(a,b)


numpy.row_stack(a,b)


18.横向拆分

array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> numpy.hsplit(a,3)
[array([[1],
[4],
[7]]), array([[2],
[5],
[8]]), array([[3],
[6],
[9]])]


相当于

numpy.split(a,3,axis=1)


18.纵向拆分

numpy.vsplit(a,3)


相当于

numpy.split(a,3,axis=0)


19.深向拆分

numpy.dsplit(c,3)


20.数组的属性

b.ndim    #数组的维度
b.size    #数组元素数量
b.itemsize   #各元素所占字节数
b.nbytes    #数组总共所占字节数
b.T    #转置
b.real    #数组的实部
b.imag    #数组的虚部
b.dtype    #数组的类型

####flat######
f = b.flat   #数组的迭代器
for item in f:
print (item)   #打印每一个元素
b.flat[[1,3]]   #返回第1跟3标号的元素
b.flat[[1,3]] = 1   #标号1跟3的元素设为1
####flat######


21.将numpy转换成python列表

b.tolist()


22.将数组元素转换为指定类型

c = b.astype(int)
c = b.astype('complex')


23.统计性函数

import numpy as np
from scipy.stats import scoreatpercentile
data.max()
np.max(data)#最大值
data.min()
np.min(data)#最小值
data.mean()
np.mean(data)#平均值
data.std()
np.std(data)#标准差
np.median(data)
scoreatpercentile(data,50)#中位数


24.矩阵求逆

np.linalg.inv(A)
np.linale.pinv(A)#伪逆


25.生成单位矩阵

np.eye(N)


26.数组点积

np.dot(A,x)


27.求解线性方程组

Ax=b

x = np.linalg.solve(A,b)


28.计算特征值与特征向量

Ax=ax

a = np.linalg.eigvals(A)
eigenvalues, eigenvectors = np.linalg.eig(A)


29.二项分布随机数

outcome = np.random.binomial(num,probability,size = len(a))


30.正态分布采样

normal_values = np.random.normal(size = N)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: