【数据挖掘】—— 一文搞懂Numpy基本操作

  Numpy是一个python科学计算库,支持数组和矩阵操作,可用于处理数值类型的数据,进行数值的计算分析

一、ndarray

  ndarray是一个N维数组对象,它里边的数据必须是同类型的,而python中的list对象中数据可以是不同类型的。

1.一维数组
  ①将list转化为array:np.array(list)

#数组计算
a=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]
b=np.array(a)
print(b)

  ②利用range生成序列,利用np.array()将其转化为数组

#利用range生成序列,利用np.arrsy()将其转化为数组
import numpy as np
m=np.array(range(5))
print(m)

  ③利用arange生成

#利用arange生成
m=np.arange(0,5)
print(m)

2.二维数组: 矩阵形式[ [ ] [ ] [ ] ]

3.属性:获取数组维度:[ ].ndim
    获取数组形状(行列数):[ ].shape
    获取数组中元素个数:[ ].size

4.改变数组形状

数组行列转换
      [ ].shape=(m,n) 注意:m*n=size否则会报错
      [ ].reshape(m,n)
      两者区别:前者在直接操作原有数组,后者返回一个新的数组,原有数组不变

多维数组转化为一维数组

① 可利用[ ].reshape(m,n)实现,即m=size/n=size:[].reshape((m,),order=’F’),其中order表示转换方式,默认C为以行展开,F表示以列展开。
② [ ].flatten(order=’F’)同样可实现一维数组转换

5.数组和列表相互转化

  ① 将数组转化为列表: b=a.tolist() a为数组,b为转化后的列表
  ② 将列表转化为数组: b=np.array(a) a为列表,b为转化后的数组

二、数组的计算

1.数组与数的计算(+ - * /):即给数组中每一个元素都对应相应计算

2.数组与数组计算

   ①两数组形状(行列数)相同才能计算,即将对应位置的元素做相应计算

  ②一维数组和多维数组计算时,列数/行数相同即可,即将多维数组的每行/每列都与该一维数组进行相应计算

三、数组元素的增删改查

1.增:添加元素
  np.append(a,b,axis=0/1):a为原数组,b为要添加的元素/数组,axis指定按行/列添加

2.删:删除元素np.delete(a,b,axis=0/1)

  数组去重:np.unique(a,return_index=True, return_inverse=True, return_counts=True,) return_index代表是否返回新列表元素在旧列表中的位置(以列表形式储存);return_inverse代表是否返回旧列表元素在新列表中的位置;return_counts代表是否返回去重数组中元素在原数组中出现的次数。

4.改
  ①根据条件修改:提取出满足条件的元素,将其修改为指定值
a[a<5]=1即表示将所有小于5的元素替换为1

  ② 三目运算:np.where(condition,a,b):判断是否满足condition,满足则返回a,不满足返回b

5.查
  ① 方向:数组中的轴即代表的是数组的方向。当我们想要进行列操作时,需要设置axis=0,进行行操作时,设置axis=1。
举个栗子:对列求平均

a=np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])
print(a)
b=np.average(a,axis=0)
print(b)#b实现了对a的列求平均

  ②切片:
  一维数组:a[m:n:p]即从索引为m到n-1,按步长p取出相应数据
m/n可省略,若胜利m/n 则表示,取出从索引n/m向前/向后的所有数据

       注意:索引从0开始

  多维数组:多维数组中,一行代表一条数据。例:取出索引为1的数据则输出的是第二行的所有数据
         获取一行中的所有数据:a[1,:]即取出第二行的所有列
         获取连续多行: a[1:5]即取出第二到第五行的所有列
         获取连续多行多列: a[1:5,2:5]即取出第二-五行的第三到五列的数据
         获取不连续多行: a[[1,3,5]]即取出第一、三、五行的所有列
         获取不连续多行多列: a[[1,3,5],[2,3,6]即取出第一、三、五行的第二、三、六列

猜你喜欢

转载自blog.csdn.net/m0_46568930/article/details/111402397