数据分析基础入门

  • Post author:
  • Post category:其他


Ndarray 多维数组 :

numpy数组是一个多维的数组对象,称为ndarray ,具有矢量算数运 算能力和复杂多维广播能力,并且执行速度快,节省空间

导入: import numpy as np

属性:ndim 维度个数

Shape 维度大小

Dtype 数据类型 数据类型有int float bool

Size 数据大小

创建

函数 说明

array 输入数据转换为ndarray对象,可以是python元组、列表或其他序列类型。可以自动识别dtype,或者手动指定类型

arange 类似range,返回ndarray的一维序列数组

ones 创建全1数组,默认float类型。ones_like创建一个类型输入数组的全1数组

zeros 与ones相同,创建全0数组

empty 初始化数组,不是总是返回全0,有时返回的是未初始的随机值(内存里的随机值)。

linspace 线性关系等分的一个数列

random.randint 指定范围指定形状的随机矩阵

random.randn 标准正太分布

random.random 0到1 的指定形状的矩阵

方法:

type() 测类型 参数需要测得数据类型

astype() 转换adarray内部数据类型 参数需要转换的类型

reshape() 重构形状 参数形状(a,b,c,…)a

b

c*…需要等于size

Ndarray的基本操作:

1索引

一维数组用法同列表一样

二维的例如a=array([[94, 21, 71, 32],

[32, 20, 13, 5],

[66, 31, 18, 57],

[12, 49, 85, 53]])

可以通过a[2][1]取2行1列的数据 也可以通过a[2,1]来取

多维照葫芦画瓢

2切片

一维数组切片同列表一样

二维例如

([[43, 68, 94, 1],

[77, 82, 98, 61],

[31, 60, 30, 12],

[81, 0, 42, 2]])

Nd[:2]表示取前2行 nd[:2,:2]代表取前2行的前2列

多维同理

数据翻转nd1[::-1]

隔三个取一个nd1[::3]

倒着隔三个取一个nd1[::-3]

每一列的元素不变 每一行的元素倒过来nd[::1,::-1]

3级联

就是把两个数据放到一起

1.np.concatenate() 级联需要注意的点:

2.级联的参数是列表:一定要加中括号或小括号,列表里面放的是ndarray

3.维度必须相同

4.形状相符

5.【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向

6.可通过axis参数改变级联的方向 axis=1表示竖着级联行数会增加 axis=0表示行着级联 列数会增加

7.np.hstack水平级联 多行变成一行二维会变一维

8. np.vstack垂直级联 一行变多行 一维变二维

4切分

np.vsplit(nd,[a,b])将一列切开 横着切 a,b表示刀的位置 下图是【1,3】切



np.hsplit 将一行切开 竖着切 下图是【2,4】切



np.split axis = 0 和vsplit一样的效果 axis = 1 和 hspilt一样的效果

5副本

数据分析的copy 不分深和浅, 就是简单的复制而已 复制品的改变不会影响数据源

6聚合

np.sum 求和 axis=0每一列求和 axis=1每一行求和

np.prod 乘积

np.mean 平均值

np.std 标准差

np.var 方差

np.min 最小值

np.max 最大值

np.argmin 最小值得下标索引

np.argmax 最大值得下标索引

np.median 中位数

np.any 任一个 nan返回flase 可判断行或列或整体

np.all 所有

np.power 幂运算

7ndarray的矩阵操作

±*/ np.add np.subtract np.multiply np.divide

矩阵相乘np.dot(nd1,nd2)

两个ndarray 在进行相乘的时候, 一个数据的行和一个数据 的列必须相同

【重要】ndarray广播机制的两条规则

  • 规则一:为缺失的维度补1
  • 规则二:假定缺失元素用已有值填充

8排序

冒泡排序

def sort_nd(nd):

for i in range(nd.size):

for j in range(i, nd.size):

if nd[i] > nd[j]:

nd[i] , nd[j] = nd[j], nd[i]

return nd

精简版冒泡排序

def sort2_nd(nd):

for i in range(nd.size):

#当i = 0 index_min =np.argmin(nd[0:])+0 index_min = 0

#当i = 1 index_min = np.argmin(nd[1:])+1 index_min = 1

#当i = 2 inde_min = np.argmin(nd[2:])+2

index_min = np.argmin(nd[i:])+ i

nd[i],nd[index_min] = nd[index_min], nd[i]

return nd

快速排序

np.sort()与ndarray.sort()都可以,但有区别:

  • np.sort()不改变输入
  • ndarray.sort()本地处理,不占用空间,但改变输入

部分排序

np.partition(a,k)

有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。

  • 当k为正时,我们想要得到最小的k个数
  • 当k为负时,我们想要得到最大的k个数



版权声明:本文为xuangusai4316原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。