numpy的基本用法

引言

numpy和pandas是数据分析中常用的对大量数据处理的库,使用起来十分方便。pandas底层技术也是numpy。numpy以高性能著称,底层用c++搭建,对数据矩阵的运算十分迅速。

数据分析中数据处理的一般流程

数据分析
数据预处理
数据处理
数据展示

数据收集的方法

1,网络爬虫
2,公开数据集(kaggle)
3, 其它途径收集的数据

数据预处理

1,归一化:使数据看起来是一样的。
2,二值化:设置标准值,将数据集分成两个部分,一般用于图像处理。
3,维度变化
4,去重:去掉重复的数据。
5,无效数据过滤:在数据集中有些符号,无用的字符需要过滤除去。

安装numpy

windows系统:命令行中输入:pip install numpy
mac 系统: 命令行中输入: pip3 install numpy
在anaconda环境中直接导入即可,不需要安装。

numpy的基础用法

1,创建一个ndarray形的数组
data = np.array([1,2,3,4,5])
print(data)

结果如下:[1 2 3 4 5]

2,创建一个二维的数组

data = np.array([[1,2,3],[4,5,6]])#注意这里是列表嵌套,两个列表用一个大的列表封装
print(data)#输出数据
print(data.ndim)#判断data的维度
print(data.shape)#输出多少行多少列

结果如下
[[1 2 3] [4 5 6]] (2, 3) 2

3,创建一个全是0或1的数组

data1=np.zeros(10)#一维全是0
print(data1)
data2=np.zeros((2,5))#二维2行5列的0数组
print(data2)
data3 = np.ones(10)#一维全是1
print(data3)
data4 = np.ones((2,5))#二维2行5列的1数组
print(data4)

结果如下:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

4,获取数组中的某一个数字

data = np.arange(10)
print(data[5])
data = np.array([[1,2,3],[4,5,6]])
print(data[0,1])
print(data[0][1])
5
2
2

5,数组切片

有时候遇到我们将数组切片后的副本拷贝出来修改的时候,原来的数组也被修改了,这时候相当于data_list是data的引用。

data=np.arange(10)
data_list=data[3:6]
print(data_list)
print(data)
data_list[2]=100
print(data)

结果如下

[3 4 5]
[0 1 2 3 4 5 6 7 8 9]
[  0   1   2   3   4 100   6   7   8   9]

这时候,我们可以采用copy方法对data中的数据进行拷贝来使原来的数据不被改变。

data=np.arange(10)
data_list=data[3:6].copy()
print(data_list)
print(data)
data_list[2]=100
print(data)
print(data_list)

结果如下:

[3 4 5]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[  3   4 100]

copy函数虽然有这个好处,但是新的数据也需要储存,这时候会适当降低效率,故最好不要随便的使用copy函数。

6变化数据的维度

下面的代码将0-9的数组转化为了5行2列的二维数组。

data = np.arange(10)
print(data)
print(data.reshape(5,2))#如果reshape(2,4)格式不对则报错

结果如下:

[0 1 2 3 4 5 6 7 8 9]
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

7矩阵的转置

矩阵的转置就是行列互换。

data = np.arange(10)
print(data.reshape(5,2).T)

结果如下:

[[0 2 4 6 8]
 [1 3 5 7 9]]

8数组元素的计算

这里使用取平方根来进行演示

data = np.arange(10)
print(np.sqrt(data))

结果如下:

[0.         1.         1.41421356 1.73205081 2.         2.23606798
 2.44948974 2.64575131 2.82842712 3.        ]

还有许多常用的运算方法如下图
在这里插入图片描述
ceil函数

data =np.array([2.1,4.2,6.3,8.4,10.1])
print(np.ceil(data))
[ 3.  5.  7.  9. 11.]

where函数
在0-9中选出大于2的元素,如果大于2则输出该元素的值,如果小于2则输出0

data = np.arange(10).reshape([2,5])
print(np.where(data>2,data,0))

结果如下:

[[0 0 0 3 4]
 [5 6 7 8 9]]

around函数
around函数主要用于四舍五入,但可以调节精度,decimals默认为0

data = np.array([1.2,2.6,3.7,4.8,1.4,5.3])
print(np.around(data,decimals=1))#保留一位小数
print(np.around(data,decimals=0))#保留整数
print(np.around(data,decimals=-1))#整数部分第一位四舍五入

结果如下:

[1.2 2.6 3.7 4.8 1.4 5.3]
[1. 3. 4. 5. 1. 5.]
[ 0.  0.  0.  0.  0. 10.]

9两个数组之间的计算方法

data1=np.array([1,3,5,7])
data2=np.array([2,4,6,8])
print(np.power(data1,data2))#计算data1的data2次方
print(np.multiply(data1,data2))#计算两个数组的元素相乘,不是矩阵相乘
print(np.fmax(data1,data2))#计算两个数组中各个位置上元素较大的那个元素
print(np.fmin(data1,data2))#计算两个数组中各个位置上元素较小的那个元素

结果如下:

[      1      81   15625 5764801]
[ 2 12 30 56]
[2 4 6 8]
[1 3 5 7]

当然若要得到公共元素,可以将list转化为set使用交符号&即可。

10数组中的统计方法

data=np.arange(10)
print(np.sum(data))#求和
print(np.mean(data))#求平均数
print(np.std(data))#求标准差
print(data.max())#求最大值
print(data.min())#求最小值
print(data.argmax())#求最大值位置
print(data.argmin())#求最小值位置
print(np.median(data))#求中位数
print(np.var(data))#求方差

结果如下:

45
4.5
2.8722813232690143
9
0
9
0
4.5
8.25

11矩阵的运算

矩阵中的加减运算基本和数组类似,这里主要是说矩阵的乘积运算
只有data1的行数等于data2的列数才可以相乘

data1=np.array([[1,3,5],[7,9,11]])
data2=np.array([[2,4],[6,8],[10,12]])
print(np.dot(data1,data2))

结果如下:

[[ 70  88]
 [178 232]]
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值