python numpy

import numpy as np
通过给array中传入Python的序列对象来创建数组。如果传入的是嵌套的序列,就创建多维数组。
数组的大小可以通过shape来获得。如果某个轴的元素为-1,就会根据数据元素的个数来计算这个轴的长度。eg: a=[[1,2],[3,4],[5,6]] a.shape=2,-1 #将a变成横轴为2,竖轴为3的形式。
数组元素的类型通过dtype获得。

创建数组的一个方式是先创建一个Python的list然后通过array函数将其变为数组。这里有一些直接创建数组的函数。
arrange()创建一维数组,参数包括开始值,终止值,步长。
linspace()创建一维数组,参数包括开始值,终止值,个数

存取序列
通过下标范围 eg: a[1:5] a[:-1] 和原始数组共享同一块数据空间,改变一个另一个也改变。
使用整数序列,序列可是数组或列表 eg: b = a[[1,4,5]] 获取a中下标为1,4,5的元素,不和原始数据共享空间。也可以通过整数序列改变元素的值。
使用布尔数组,收集数组中对应布尔数组中为true的元素,不和原始数据共享数据空间,只针对布尔数组,不可以用布尔列表。 eg : a = b[np.array([true,false,true,true]) 如果使用的布尔列表就把true当1,false当0,当做下标来存取。布尔数组长度不够时,剩下的都用false补齐。也可以通过布尔数组下标改变元素的值。
多维数组使用组元作为下标,组元只要使用逗号分开就可以。
这里写图片描述
切片操作 : [起始位置:结束位置:方向]

结构数组
首先创建一个dtype对象,通过字典参数描述结构类型的各个字段。字典有两个关键字names,formats。每个关键字对应的都是一个列表。names定义结构中的字段名,而formats定义每个字段的类型。
然后使用array创建数组,dtype属性为创建的dtype对象。
这里写图片描述
a[0]是一个结构元素,看上去和元组形式差不多。和数组 a 共享内存数据。
结构像字典一个可以通过字符串下标获得对应的字段值。

ufunc运算:
是universal function的缩写。是对数组每一个元素进行操作的函数
y = np.sin( x ) 对每一个元素求sin,计算后 x 的值并没有改变。如果想要将计算结果覆盖到 x 上,可以将 x 当做第二个参数 y = np.sin( x , x )
数组的加减乘除可以直接用符号来计算,也可以使用函数。这里写图片描述
当使用ufunc函数对两个数组进行运算时,ufunc函数会对两个数组对应元素进行计算,如果两个数组shape不同的话,会进行如下处理:
让所有的输入数组都向其中shape最长的数组看齐,shape不足的都通过在前面加 1 补齐;
输出数组的shape是输入数组shape的各个轴的最大值;
如果输入数组的某个轴和输出数组的对应轴长度为1时,这个数组能够计算,否则出错;
当输入数组的某个轴的长度为1时,沿着此轴运算都用到此轴上的第一组值。
reduce方法:和Python的reduce方法类似,沿着axis轴对array进行操作。

矩阵运算:
dot ,inner,outer
文件存取:
numpy文件存取的格式分为两类:二进制和文本。而二进制又分为numpy专用的格式化二进制类型和无格式类型。
使用数组的方法tofile可以将数组数据以二进制格式写进文件。tofile输出的数据没有格式。所以读取数据的时候需要自己格式化数据。
这里写图片描述
所以读入数据的需要自己定义dtype和shape才可以保证数据一致。
numpy.load 和 numpy.save 函数以numpy专用的二进制类型保存数据。会自动处理shape等,方便但是难与其他语言读入。
如果想要将多个数组保存到一个文件中的话,可以使用numpy.savez函数,第一个参数是文件名,其他参数都是需要保存的数组,可以使用关键字为数组起名,非关键字的话,会自动取名为‘arr_0,arr_1,….’savez函数输出是一个压缩文件,每一个文件都对应save函数保存的数组,文件名对应于数组名。
这里写图片描述

random模块
np.random.rand(shape) 生成0到1之间的随机数
np.random.randn(shape) 生成标准正态分布
np.random.randint(low,high,shape) 返回随机整数,在[low,high)区间
np.random.random(shape) 返回随机浮点数,在区间[0.0 1.0)
np.random.sample(population ,k) 从population中随机选择k个

tile(A,shape) 将A以shape形状重复
A.flags.writeable= False 将array的属性设置为只读
argmax() argmin() 求数组中最大值,最小值对应的下标
any函数,判断矩阵元素是否满足条件,是的话返回true
flat是一维迭代器,将数组当成一维向量去遍历,A.flat[5]索引出A的第五个元素

numpy中数组的拷贝:
赋值是浅拷贝,改变其中一个的值,另一个也随之改变。例如修改a[2]=10,那么b[2]也随之改变。b只是a的一个映射。
如果想完完全全的复制a,但b和a没有任何关系,就要使用copy函数,这个是深拷贝,改变a的值并不会影响b的值。

np.where(condition,x,y) condition is true 返回x false 返回y
这里写图片描述

数组的分割:
numpy.split( ary, indices_or_sections, axis =0)
将一个数组分割成多个 sub-array,返回一个 list of ndarrays
参数:
ary:一个 array
indices_or_sections:一个整数 N 或者是一个 1-D array of sorted integers,如果是整数,array将会沿着 axis 的方向等分成 N 份,如果是另一个,则会沿着 axis,在 1-D array 元素处分割,例如,[2,3],axis=0,结果是

  1. ary[:2]
  2. ary[2:3]
  3. ary[3:]
    axis: along which to split

numpy.frombuffer(buffer ,dtype=float)
将缓冲区的内容变成一维数组

numpy.expand_dims(array,axis)
增加数组的维度

numpy.diff(a, n=1,axis=-1)
沿着指定的方向计算离散差值
a:array
n:进行差值计算的次数
axis:进行计算的方向

numpy.where()
两种用法
1) numpy.where(condition)
返回一个元组,返回符合 condition 的索引值,坐标以元组的形式给出,一般原数组有几维,输出的元组就有几维,分别对应符合条件的元素的各维坐标

a = np.arange(10)
b = np.where(a>5)
# b = (array([6,7,8,9]),)

2) numpy.where(condition,x,y)
复合条件返回 x ,否则返回 y

np.argpsrt(a)
返回数组从小到大的索引值,是一个数组

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值