python fromfile函数_python numpy常用函数

numpy 常用函数按功能归纳:

一、创建数据

1、创建数组:

(1)array:np.array

import numpy as np

np.array([[1,2,3],[2,3,4]])

a=([1,2,3],[3,2,1])

np.array(a)

np.array(list('abcsafdfasfdasdfg'))

生成指定元素类型的数组:设置dtype属性:

X=numpy.array([1,2,3,4],dtype=numpy.int64)

X=numpy.array([1,2,3,4],dtype=numpy.float64)

使用astype复制数组,并转换类型

X=numpy.array([1,2.6,3],dtype=numpy.float64)

Y=x.astype(numpy.int32)

将字符串元素转换为数值元素

X=numpy.array([‘1’,’2’,’3’],dtype=numpy.dstring_)

Y=x.astype(numpy.int32)

使用其他数组中的数据类型作为参数

X=numpy.array([1,2,3.4].dtype=numpy.float32)

Y=numpy.arange(3,dtype=numpy.int32)

Y.astype(x.dtype)

Ndarray的矢量化计算

X=numpy.array([1,2,3])

X*2

X>2

Y=numpy.array([3,4,5])

X+Y

X>Y

(2)zeros:np.zeros,  ones:np.ones

A=np.zeros(3) #一行三列

B=np.zeros((3,4))

C=np.zeros_like(B) #按照B的shape创建数组。

打印数组元素类型

print(‘数组类型:’,type(B))

print(‘数组元素类型:’,B.dtype)

print(‘数组形状:’,B.shape)

(3)empty和empty_like:创建空数组,空数据中的值并不为0,而是未初始化的随机值

a=np.empty(5)

b=np.empty((3,4))

c=np.empty_like(b)

(3)arange :起始值,终值,步长(用法与range类似)。

data=np.arange(1,41,2)

data.reshape((4,5))  #将其形状改变为(4,5)分4部分,每份5个

(4)linspace :指定起始值、终值和元素个数创建一维数组(等差数列)。

np.linspace(0,20,100)

(5)logspace:指定起始值、终值和元素个数创建一维数组(等比数列)

np.logsapce(1,2,20)

(6)eye(I):创建对角矩阵数组(对角线为1,其余为0)

np.eye(2) #二阶方阵

np.eye(3,4) #矩阵

(7)frombuffer,fromstring,fromfile等函数可以从字节序列创建数组

s='abcdefg'

np.fromstring(s,dtype=numpy.int8)

(8)fromfunction函数的第一个参数计算的每个数组元素的函数,第二个参数为数组的大小(shape)

def func2(i,j):

return(i+1)*(j+1)

np.fromfunction(func2,(9,9))

2、查看数组:

dim,  dtype,   shape

3、数组的索引和切片(切片为视图非复制;复制.copy())

一维数组的索引:与python的列表索引功能相似

(1)多维数组的索引:

arr[r1:r2,c1:c2]

arr[1,1]等价于arr[1][1]

[:]代表某个维度的数据

x=numpy.array([[1,2,3],[2,3,4],[3,4,5]])

x[0]  #[1,2,3]

x[0][1]  #2

x[0,1]  #同x[0][1]

x=numpy.array([[[1,2],[2,3]],[[5,6],[7,8]]])

x[0]  #[[1,2],[3,4]]

y=x[0].copy()

z=x[0]  #未生成一个副本,是视图

y[0,0]  #1

y[0,0]=0

y #[[0,2],[3,4]]

z[0,0]=-1

x[0]  #[[-1,2],[3,4]]

z #[[-1,2],[3,4]]

(2)ndarray的切片

x=numpy.array([1,2,3,4,5])

x[1:3]  #[2,3] 右边开区间]

x[:3]  #[1,2,3] 左边默认为0

x[1:]  #[2,3,4,5]

x[0:4:2]  #[1,3] 下标递增2

x =numpy.array([[1,2],[3,4],[5,6]])

printx[:2] # [[1 2],[3 4]]

printx[:2,:1] # [[1],[3]]

x[:2,:1]=0  #用标量赋值

print(x)  #[[0,2],[0,4],[5,6]]

x[:2,:1]=[[8],[6]]  #用数组赋值

(2)narray数组的布尔索引:使用布尔数组作为索引。

arr[condition],condition为一个条件/多个条件组成的布尔数组。

x=numpy.array([3,2,3,1,3,0])

y=numpy.array([True,False,True,False,True,False])

x[y]  #[3,3,3]

x[y==False]  #[2,1,0]

x>=3  #[True False True False True False]

x[~(x>3)]  #[2,1,0]

(x==2)|(x==1)  #[False True False True Flase Flase]

x[(x==2)|(x==1)]  #[2,1]

x[(x==2)|(x==1)]=0

printx  #[3 0 3 0 3 0]

(3)花式索引:使用整型数组作为索引

x=numpy.array([1,2,3,4,5,6])

x[[0,1,2]]  #[1,2,3] 相当于列表中的索引

x[[-1,-2,-3]]  #[6,5,4] 相当于列表中的索引

x=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

x[[0,2]]  # [[1,2,3,4],[ 9,10,11,12]]  相当于列表中的索引

x[[0,2],[0,2]]#[1,12]  相当于x[0][0]=1,x[2][2]=12

x[[0,2]][:,[0,3]]  #[[0,2]]先取x的第一个和第二个元素: [[1,2,3,4],[ 9,10,11,12]],[:,[0,1]]取所有行的,第一列和第三列元素:[[1,3],[9,11]]

numpy.ix()函数,提取

numpy.ix([0,1],[0,1])#取【第一行,第二行】,【第一列,第二列】 :[[1,2,3,4],[5,6,7,8]]

x[[0,1],[0,1]]=[0,0]

x  #[[0,2,3,4],[5,0,7,8],[9,10,11,12]]

(4)ndarray数组的转置和轴对换、

数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改

k=numpy.arange(9)

m=k.reshape((3,3))#改变数组的shape复制生成2维,每个维度长度为3的数组。

计算矩阵的内积xTx

numpy.dot(m,m.T) #numpy.dot 点乘

高维数组的轴对象

k=numpy.arange(8).reshape(2,2,2)  #[[[0 1],[2 3]],[[4 5],[6 7]]]

k[1][0][0]  #[4]

轴变换transpose参数:由轴编号组成的元组(三维数组不好理解,直接百度看图解)

m=k.transpose((1,0,2)) #m[y][x][z]=k[x][y][z]

4、ndarray通用函数

通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数

常用的计算函数:

abs(计算绝对值),fads

sqrt(平方根),square(平方的),exp(指数函数),log,log*,loglp

sign,ceiling,floor,modf

isnan(Not a Number),isfinite,isinf

cos,sin,tan,arccos,arcsin,arctan

add(加),substract(减),multiply,divide,power

maximum,minimum,mod,copysign

greater,greater_equal(大于等于),less,less_equal

5、产生数组

np.meshgrid

np.linspace(start,end,Number)

np.arange(start,end,step)

6、逻辑操作

np.where(逻辑表达式,a,b)#表达式为真返回a,为假返回b)

7、统计

sum,mean,std,var

min,max,argmin(返回最大值,对应的是下标),argmax

cumsum(累积和),cumprod(累积的乘积)

8、排序相关

sort(axis)

unique()

9、随机数生成

numpy.random

简单的随机数据

rand(d0,d1,...,dn) #均匀分布的数

randn(d0,d1,...,dn) #标准正态分布

sigma*np.random.randn(...)+mu

randint(low[,high,size])

random_integers(low[,high,size])

choice(a[,size,replace,p])

10、排列

shuffle(x)

permutation(x)

11、分布:

normal([loc,scale,size])  正态(高斯)分布

beta(a,b[,size])  贝塔分布样本,在[0,1]内

binomial(n,p[,size])  二项分布的样本

chisquare(df[,size])  卡方分布样本

lognormal([mean,sigma,size])  对数正态分布

exponential([scale,size])  指数分布

f(dfnum,dfden[,size])  F分布样本

multivariate_normal(mean,cov[,size])  多元正太分布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值