创作该栏目是主要是为了提升自身数据预处理能力,同时也希望能和大家共同学习。
该书主要是搬运《Pandas数据预处理详解》
第一章numpy基础
1.1Numpy基础运算
首先需要导入NumPy模块模块才能使用Numpy
import numpy as np
接下来创建成为ndarrayd NumPy数组,然后对其进行加法和乘法运算
a = np.array([1, 2, 3])
a * 3
#array([3, 6, 9])
a + 2
#array([3, 4, 5])
从上面的代码可以看到,通过对数值进行加法或者乘法运算,就能实现对数组中所有的元素进行计算,这点与列表不同。
[1, 2, 3] * 3
#[1, 2, 3, 1, 2, 3, 1, 2, 3]
矩阵内积:
b = np.array([2, 2, 0])
#内积
np.dot(a, b)
#6
创建各种数组
np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(0, 10, 2) # (起点,终点,间隔)
#array([0, 2, 4, 6, 8])
np.linspace(0, 10, 15) # 0~10划分为15等分
#array([ 0. , 0.71428571, 1.42857143, 2.14285714, 2.85714286,
# 3.57142857, 4.28571429, 5. , 5.71428571, 6.42857143,
# 7.14285714, 7.85714286, 8.57142857, 9.28571429, 10. ])
创建二维数组
c = np.array([[1, 2, 3], [4, 5, 6]]) # 创建二维数组
c
#array([[1, 2, 3],
# [4, 5, 6]])
c.shape
#(2, 3)
d = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13,14,15],[16,17,18],[19,20,21],[22,23,24]]])
d
#array([[[ 1, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9],
# [10, 11, 12]],
#
# [[13, 14, 15],
# [16, 17, 18],
# [19, 20, 21],
# [22, 23, 24]]])
d.shape
#(2, 4, 3)
求和
这里需要引入axis的概念,例如使用求和函数np.sum
np.sum(c)
#21
如果要每列求和,则需要指定坐标轴
c
#array([[1, 2, 3],
# [4, 5, 6]])
np.sum(c, axis=1) #指定行求和
#array([ 6, 15])
np.sum(c, axis=0) #指定列求和
#array([5, 7, 9])
此外,还可以对数组形状进行修改。使用reshape函数
c.reshape(3, 2)
#array([[1, 2],
# [3, 4],
# [5, 6]])
c.reshape(6, 1)
#array([[1],
# [2],
# [3],
# [4],
# [5],
# [6]])
矩阵转置
可以使用.T或者transpose函数
c.T
#array([[1, 4],
# [2, 5],
# [3, 6]])
np.transpose(c)
#array([[1, 4],
# [2, 5],
# [3, 6]])
接下来,尝试创建随机数。
np.random类提供了各种各样创建随机数的函数。
例如randn返回的是服从标准正态分布的随机值;而rand则返回0-1的随机数
np.random.randn() #randn 服从标准正态分布的随机值
#0.40022223491176945
np.random.rand() #rand()0-1
#0.5187446868923544
在参数中指定形状,就可以创建出使用随机数填充的任意形状的数组
np.random.randn(2, 3)
#array([[ 0.13632633, -0.85484185, 0.34784709],
# [ 0.75415272, 1.37677889, 1.76833095]])
索引和切片
如果需要将数组中特定的值单独提取出来,就需要使用到索引和切片
首先进行索引的学习
a
#array([1, 2, 3])
a[0]
#1
a[2]
#3
a
#array([1, 2, 3])
#赋值
a[1] = 3
a
#array([1, 3, 3])
a[2]
#3
接下来看下二维的情况
#二维
c
#array([[1, 2, 3],
# [4, 5, 6]])
c[0, 0]
#1
c[0, 2]
#3
c[1, 2]
#6
接下来是切片
d = np.array([0, 5, 2, 7, 1, 9])
d[1:5]
#array([5, 2, 7, 1])
d[0:5:2]
#array([0, 2, 1])
d[::-1]
#array([9, 1, 7, 2, 5, 0])
广播
广播是Numpy中具有代表性的功能之一,一旦掌握了其用法,会极大简化程序的开发工作。
具体直接看代码会容易理解一些
广播机制
a
#array([1, 3, 3])
c
#array([[1, 2, 3],
# [4, 5, 6]])
a + c
#array([[2, 5, 6],
# [5, 8, 9]])
a * c
#array([[ 1, 6, 9],
# [ 4, 15, 18]])
1.1就简单说到这里,后面我们继续学习!