20 python数据处理numpy

20 python数据处理numpy

引言

python中使用list比较浪费内存和时间,numpy提供ndarray对象:ndarray是存储单一数据类型的多维数组

ndarray数组的基本操作

  • N维数对象ndarray是用于存放同类型的多维数组
  • ndarray中的每个元素在内存中都有相同储存大小的区域
  • ndarray中每个元素的数据类型对象是对象(称为dtype)
  • 与python中其他容器对象一样,可以通过数组进行切片或索引
  • 可通过ndarray的方法和属性来访问和修改ndarray的内容

ndarray创建数组

使用array函数,它接受一切序列型的对象,然后产生一个含有传入数据的numpy数组。其中,嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组

numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

object数组或嵌套的数列
dtype 数组元素的数据类型(可选)
copy 对象是否需要复制(可选)
order 创建数组的样式 C为行方向 F为列方向 A为任意方向(默认)
subok 返回一个与基类型一致的数组
ndmin 指定生成数组的最小维度

array函数

import numpy as py
a=[1 ,2, 3, 4]
b=np.array(a)#即将列表装化为数组
c=np.array([1,2],[3,4]) #生成多维数组

ones和zeros

np.zeros(3) #全0的一维数组
np.ones(3) #全部为1的一维数组
np.zeros((3,)) #全0的3*1二维数组
np.identity(3)#单位矩阵,3*3
np.arrage(10) #生成0到9的数组,共10个数

随机数组的创建

均匀分布
np.random.rand(10,10) #10*10的二维随机数组,范围0到1    [0,1)
np.random.uniform(0,100) 创建指定范围内的一个数
np.random.randint(0,10,5) 创建指定范围的5个整数
np.random.randint(0,10,(3,5)) 3*515个随机整数组成的矩阵,位于010 
正态分布
np.random.normal(1.75,0.1,(2,3)) 参数分别为:给定的均值 标准差 维度的正态分布
np.random.standard_normal(5) #从标准正态分布中随机采样5个数字

ndarray数组属性

b.size 元素的个数
b.shape 数组的形状
b.ndim 数组的纬度
b.dtype数组元素类型
b.Itemsize 数组元素字节大小
b.reshape(2,3) #把数组改为2*3的

数组和标量之间的运算

数组很重要,它可以使我们不写循环就对数据进行操作,这叫矢量化

  • 大小相等的数组之间的任何运算都会将运算作用在相对应的元素上
  • 数组与标量之间的算术运算会将标量传播到各个元素

索引和切片

一维数组和列表最重要的区别在于,数组切片是原始数据的视图,这意味着数据不会被复制,数组视图上的任何修改都会直接反映在原始数组上
将一个标量复制到一个切片时,改值会自动传播到整个选区

arr[5:8]=12                   #5 ,6, 7 位置都会变成12

二维数组中,各索引位置上的元素不再是标量而是一维数组
可以对各个元素进行递归访问,但是这个有点麻烦
更好的方法是传入一个以逗号分隔的索引的列表来选取单个元素
在多维数组中,如果省略了后面的索引,则返回的对象是一个纬度低一点的ndarray

数学统计方法

sum 对数组中全部或某轴向的元素求和 零长度的数组的孙=0
mean 算数平均
std var 标准差 方差
min max
argmin argmax 最大元素最小元素的索引
cumsum 所有元素的累加
cumprod 所有元素的乘积
使用时,以下两种方法均可:
arr.mean()
np.mean(arr)
mean和sum函数可以接受一个axis参数,用于计算该轴上的统计值
arr.mean(axis=1) 对于二维数组0是按行求1是按列求.
cumsum:按照所给定的轴参数返回元素的梯形累计和,axis=0,按照行累加,axis=1,按照列累加,cumprod同理改为累积

猜你喜欢

转载自blog.csdn.net/bj_zhb/article/details/105429298