python数据分析实战-第3章-numpy库

第3章 NumPy库  32

3.1 NumPy简史  32

3.2 NumPy安装  32

3.3 ndarray:NumPy库的心脏  33

1
import numpy as np
1
a = np.array([1, 2, 3])
1
a
array([1, 2, 3])
1
type(a), a.dtype, a.ndim, a.size, a.shape, a.itemsize
(numpy.ndarray, dtype(‘int64‘), 1, 3, (3,), 8)
1
b = np.array([[1.3, 2.4],[0.3, 4.1]])
1
b
array([[1.3, 2.4],
       [0.3, 4.1]])
1
type(b), b.dtype, b.ndim, b.size, b.shape, b.itemsize
(numpy.ndarray, dtype(‘float64‘), 2, 4, (2, 2), 8)
1
b.data, type(b.data)
(<memory at 0x7f3df8064558>, memoryview)

3.3.1 创建数组  34

1
c = np.array([[1, 2, 3],[4, 5, 6]])
1
c
array([[1, 2, 3],
       [4, 5, 6]])
1
d = np.array(((1, 2, 3),(4, 5, 6)))
1
d
array([[1, 2, 3],
       [4, 5, 6]])
1
e = np.array([(1, 2, 3), [4, 5, 6], (7, 8, 9)])
1
e
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

3.3.2 数据类型  34

1
g = np.array([[‘a‘, ‘b‘],[‘c‘, ‘d‘]])
1
g
array([[‘a‘, ‘b‘],
       [‘c‘, ‘d‘]], dtype=‘<U1‘)
1
g.dtype, g.dtype.name
(dtype(‘<U1‘), ‘str32‘)

3.3.3 dtype选项  35

1
f = np.array([[1, 2, 3],[4, 5, 6]], dtype=complex)
1
f
array([[1.+0.j, 2.+0.j, 3.+0.j],
       [4.+0.j, 5.+0.j, 6.+0.j]])

3.3.4 自带的数组创建方法  36

1
np.zeros((3, 3))
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
1
np.ones((3, 3))
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
1
np.arange(0, 10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
1
np.arange(4, 10)
array([4, 5, 6, 7, 8, 9])
1
np.arange(0, 12, 3)
array([0, 3, 6, 9])
1
np.arange(0, 6, 0.6)
array([0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4])
1
np.arange(0, 12).reshape(3, 4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
1
np.linspace(0,10,5)
array([ 0. ,  2.5,  5. ,  7.5, 10. ])
1
np.random.random(3)
array([0.71423775, 0.62229946, 0.97150108])
1
np.random.random((3,3))
array([[0.95155686, 0.10092046, 0.35220847],
       [0.96635154, 0.33764827, 0.44879963],
       [0.40573132, 0.97260092, 0.30105595]])

3.4 基本操作  37

3.4.1 算术运算符  37

1
a = np.arange(4)
1
a
array([0, 1, 2, 3])
1
a+4
array([4, 5, 6, 7])
1
a*2
array([0, 2, 4, 6])
1
b = np.arange(4,8)
1
b
array([4, 5, 6, 7])
1
a + b
array([ 4,  6,  8, 10])
1
a - b
array([-4, -4, -4, -4])
1
a * b
array([ 0,  5, 12, 21])
1
a * np.sin(b)
array([-0.        , -0.95892427, -0.558831  ,  1.9709598 ])
1
a * np.sqrt(b)
array([0.        , 2.23606798, 4.89897949, 7.93725393])
1
A = np.arange(0, 9).reshape(3, 3)
1
A
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
1
B = np.ones((3, 3))
1
B
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
1
A * B
array([[0., 1., 2.],
       [3., 4., 5.],
       [6., 7., 8.]])

3.4.2 矩阵积  38

1
np.dot(A,B)
array([[ 3.,  3.,  3.],
       [12., 12., 12.],
       [21., 21., 21.]])
1
A.dot(B)
array([[ 3.,  3.,  3.],
       [12., 12., 12.],
       [21., 21., 21.]])
1
np.dot(B,A)
array([[ 9., 12., 15.],
       [ 9., 12., 15.],
       [ 9., 12., 15.]])

3.4.3 自增和自减运算符  39

1
a = np.arange(4)
1
a
array([0, 1, 2, 3])
1
a += 1
1
a
array([1, 2, 3, 4])
1
a -= 1
1
a
array([0, 1, 2, 3])
1
a += 4
1
a
array([4, 5, 6, 7])
1
a *= 2
1
a
array([ 8, 10, 12, 14])

3.4.4 通用函数  40

1
a = np.arange(1, 5)
1
a
array([1, 2, 3, 4])
1
np.sqrt(a)
array([1.        , 1.41421356, 1.73205081, 2.        ])
1
np.log(a)
array([0.        , 0.69314718, 1.09861229, 1.38629436])
1
np.sin(a)
array([ 0.84147098,  0.90929743,  0.14112001, -0.7568025 ])

3.4.5 聚合函数  40

1
a = np.array([3.3, 4.5, 1.2, 5.7, 0.3])
1
a
array([3.3, 4.5, 1.2, 5.7, 0.3])
1
a.sum()
15.0
1
a.min()
0.3
1
a.max()
5.7
1
a.mean()
3.0
1
a.std()
2.0079840636817816

3.5 索引机制、切片和迭代方法  41

3.5.1 索引机制  41

1
a = np.arange(10, 16)
1
a
array([10, 11, 12, 13, 14, 15])
1
a[4], a[-1], a[-6]
(14, 15, 10)
1
a[[1, 3, 4]]
array([11, 13, 14])
1
A = np.arange(10, 19).reshape((3, 3))
1
A
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18]])
1
A[1, 2]
15

3.5.2 切片操作  42

1
a = np.arange(10, 16)
1
a
array([10, 11, 12, 13, 14, 15])
1
a[1:5]
array([11, 12, 13, 14])
1
a[1:5:2]
array([11, 13])
1
a[::2]
array([10, 12, 14])
1
a[:5:2]
array([10, 12, 14])
1
a[:5:]
array([10, 11, 12, 13, 14])
1
A = np.arange(10, 19).reshape((3, 3))
1
A
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18]])
1
A[0,:]
array([10, 11, 12])
1
A[:,0]
array([10, 13, 16])
1
A[0:2, 0:2]
array([[10, 11],
       [13, 14]])
1
A[[0,2], 0:2]
array([[10, 11],
       [16, 17]])

3.5.3 数组迭代  43

12
for i in a:    print(i)
10
11
12
13
14
15
12
for row in A:    print(row)
[10 11 12]
[13 14 15]
[16 17 18]
12
for item in A.flat:    print(item)
10
11
12
13
14
15
16
17
18
1
np.apply_along_axis(np.mean, axis=0, arr=A)
array([13., 14., 15.])
1
np.apply_along_axis(np.mean, axis=1, arr=A)
array([11., 14., 17.])
12
def foo(x):    return x/2
1
np.apply_along_axis(foo, axis=1, arr=A)
array([[5. , 5.5, 6. ],
       [6.5, 7. , 7.5],
       [8. , 8.5, 9. ]])
1
np.apply_along_axis(foo, axis=0, arr=A)
array([[5. , 5.5, 6. ],
       [6.5, 7. , 7.5],
       [8. , 8.5, 9. ]])

3.6 条件和布尔数组  45

1
A = np.random.random((4, 4))
1
A
array([[0.92122811, 0.55810739, 0.16604965, 0.98756188],
       [0.89990698, 0.45441885, 0.85233406, 0.32187075],
       [0.58032546, 0.01878004, 0.91573127, 0.63144651],
       [0.52282585, 0.57666091, 0.97865543, 0.54473589]])
1
A < 0.5
array([[False, False,  True, False],
       [False,  True, False,  True],
       [False,  True, False, False],
       [False, False, False, False]])
1
A[A < 0.5]
array([0.04869294, 0.07669828, 0.26766679, 0.04023488, 0.10839496,
       0.45508628, 0.48141253])

3.7 形状变换  45

1
a = np.random.random(12)
1
a
array([0.93015885, 0.01067508, 0.43200938, 0.24035759, 0.01564892,
       0.09507133, 0.70143444, 0.46887118, 0.85551184, 0.61722919,
       0.94688342, 0.92520351])
1
A = a.reshape(3, 4)
1
A
array([[0.93015885, 0.01067508, 0.43200938, 0.24035759],
       [0.01564892, 0.09507133, 0.70143444, 0.46887118],
       [0.85551184, 0.61722919, 0.94688342, 0.92520351]])
1
a.shape = (3, 4)
1
a
array([[0.93015885, 0.01067508, 0.43200938, 0.24035759],
       [0.01564892, 0.09507133, 0.70143444, 0.46887118],
       [0.85551184, 0.61722919, 0.94688342, 0.92520351]])
1
a.ravel()
array([0.93015885, 0.01067508, 0.43200938, 0.24035759, 0.01564892,
       0.09507133, 0.70143444, 0.46887118, 0.85551184, 0.61722919,
       0.94688342, 0.92520351])
1
a.shape = (12)
1
a
array([0.93015885, 0.01067508, 0.43200938, 0.24035759, 0.01564892,
       0.09507133, 0.70143444, 0.46887118, 0.85551184, 0.61722919,
       0.94688342, 0.92520351])
1
A.transpose()
array([[0.93015885, 0.01564892, 0.85551184],
       [0.01067508, 0.09507133, 0.61722919],
       [0.43200938, 0.70143444, 0.94688342],
       [0.24035759, 0.46887118, 0.92520351]])

3.8 数组操作  46

3.8.1 连接数组  46

12
A = np.ones((3, 3))B = np.zeros((3, 3))
1
np.vstack((A, B))
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
1
np.hstack((A,B))
array([[1., 1., 1., 0., 0., 0.],
       [1., 1., 1., 0., 0., 0.],
       [1., 1., 1., 0., 0., 0.]])
123
a = np.array([0, 1, 2])b = np.array([3, 4, 5])c = np.array([6, 7, 8])
1
np.column_stack((a, b, c))
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
1
np.row_stack((a, b, c))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

3.8.2 数组切分  47

1
A = np.arange(16).reshape((4, 4))
1
A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
1
[B,C] = np.hsplit(A, 2)
1
B
array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]])
1
C
array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])
1
[B,C] = np.vsplit(A, 2)
1
B
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
1
C
array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])
1
[A1,A2,A3] = np.split(A,[1,3],axis=1)
1
A1
array([[ 0],
       [ 4],
       [ 8],
       [12]])
1
A2
array([[ 1,  2],
       [ 5,  6],
       [ 9, 10],
       [13, 14]])
1
A3
array([[ 3],
       [ 7],
       [11],
       [15]])
1
[A1,A2,A3] = np.split(A,[1,3],axis=0)
1
A1
array([[0, 1, 2, 3]])
1
A2
array([[ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
1
A3
array([[12, 13, 14, 15]])

3.9 常用概念  49

3.9.1 对象的副本或视图  49

12
a = np.array([1, 2, 3, 4])b = a
1
b
array([1, 2, 3, 4])
1
a[2] = 0
1
b
array([1, 2, 0, 4])
1
c = a[0:2]
1
c
array([1, 2])
1
a[0] = 0
1
c
array([0, 2])
1
a = np.array([1, 2, 3, 4])
1
c = a.copy()
1
c
array([1, 2, 3, 4])
1
a[0] = 0
1
c
array([1, 2, 3, 4])

3.9.2 向量化  50

3.9.3 广播机制  50

1
A = np.arange(16).reshape(4, 4)
1
b = np.arange(4)
1
A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
1
b
array([0, 1, 2, 3])
1
A + b
array([[ 0,  2,  4,  6],
       [ 4,  6,  8, 10],
       [ 8, 10, 12, 14],
       [12, 14, 16, 18]])
1
m = np.arange(6).reshape(3, 1, 2)
1
n = np.arange(6).reshape(3, 2, 1)
1
m
array([[[0, 1]],

       [[2, 3]],

       [[4, 5]]])
1
n
array([[[0],
        [1]],

       [[2],
        [3]],

       [[4],
        [5]]])
1
m + n
array([[[ 0,  1],
        [ 1,  2]],

       [[ 4,  5],
        [ 5,  6]],

       [[ 8,  9],
        [ 9, 10]]])

3.10 结构化数组  52

1
structured = np.array([(1, ‘First‘, 0.5, 1+2j),(2, ‘Second‘, 1.3, 2-2j), (3, ‘Third‘, 0.8, 1+3j)],dtype=(‘i2, a6, f4, c8‘))
1
structured
array([(1, b‘First‘, 0.5, 1.+2.j), (2, b‘Second‘, 1.3, 2.-2.j),
       (3, b‘Third‘, 0.8, 1.+3.j)],
      dtype=[(‘f0‘, ‘<i2‘), (‘f1‘, ‘S6‘), (‘f2‘, ‘<f4‘), (‘f3‘, ‘<c8‘)])
1
structured = np.array([(1, ‘First‘, 0.5, 1+2j),(2, ‘Second‘, 1.3,2-2j),(3, ‘Third‘, 0.8, 1+3j)],dtype=(‘int16, a6, float32, complex64‘))
1
structured
array([(1, b‘First‘, 0.5, 1.+2.j), (2, b‘Second‘, 1.3, 2.-2.j),
       (3, b‘Third‘, 0.8, 1.+3.j)],
      dtype=[(‘f0‘, ‘<i2‘), (‘f1‘, ‘S6‘), (‘f2‘, ‘<f4‘), (‘f3‘, ‘<c8‘)])
1
structured[1]
(2, b‘Second‘, 1.3, 2.-2.j)
1
structured[‘f1‘]
array([b‘First‘, b‘Second‘, b‘Third‘], dtype=‘|S6‘)
1
structured = np.array([(1,‘First‘,0.5,1+2j),(2,‘Second‘,1.3,2-2j),(3,‘Third‘,0.8,1+3j)],dtype=[(‘id‘,‘i2‘),(‘position‘,‘a6‘),(‘value‘,‘f4‘),(‘complex‘,‘c8‘)])
1
structured
array([(1, b‘First‘, 0.5, 1.+2.j), (2, b‘Second‘, 1.3, 2.-2.j),
       (3, b‘Third‘, 0.8, 1.+3.j)],
      dtype=[(‘id‘, ‘<i2‘), (‘position‘, ‘S6‘), (‘value‘, ‘<f4‘), (‘complex‘, ‘<c8‘)])
1
structured.dtype.names = (‘id‘,‘order‘,‘value‘,‘complex‘)
1
structured[‘order‘]
array([b‘First‘, b‘Second‘, b‘Third‘], dtype=‘|S6‘)

3.11 数组数据文件的读写  53

3.11.1 二进制文件的读写  54

1
data = np.random.random(16).reshape(4,4)
1
data
array([[0.87899377, 0.11342252, 0.6682891 , 0.90832539],
       [0.33643193, 0.49913359, 0.46395367, 0.38503354],
       [0.30343769, 0.74571053, 0.16758969, 0.11507577],
       [0.00213888, 0.12661618, 0.71188585, 0.95622255]])
1
np.save(‘saved_data‘,data)
1
loaded_data = np.load(‘saved_data.npy‘)
1
loaded_data
array([[0.87899377, 0.11342252, 0.6682891 , 0.90832539],
       [0.33643193, 0.49913359, 0.46395367, 0.38503354],
       [0.30343769, 0.74571053, 0.16758969, 0.11507577],
       [0.00213888, 0.12661618, 0.71188585, 0.95622255]])

3.11.2 读取文件中的列表形式数据  54

1
data = np.genfromtxt(‘data.csv‘, delimiter=‘,‘, names=True)
1
data
array([(1., 123., 1.4, 23.), (2., 110., 0.5, 18.), (3., 164., 2.1, 19.)],
      dtype=[(‘id‘, ‘<f8‘), (‘value1‘, ‘<f8‘), (‘value2‘, ‘<f8‘), (‘value3‘, ‘<f8‘)])
1
data2 = np.genfromtxt(‘data2.csv‘, delimiter=‘,‘, names=True)
1
data2
array([(1., 123., 1.4, 23.), (2., 110., nan, 18.), (3.,  nan, 2.1, 19.)],
      dtype=[(‘id‘, ‘<f8‘), (‘value1‘, ‘<f8‘), (‘value2‘, ‘<f8‘), (‘value3‘, ‘<f8‘)])

3.12 小结  55

原文地址:https://www.cnblogs.com/LearnFromNow/p/9349924.html

时间: 2024-11-03 04:25:03

python数据分析实战-第3章-numpy库的相关文章

python数据分析实战-第2章-ptyhon世界简介

第2章 Python世界简介 122.1 Python--编程语言 122.2 Python--解释器 132.2.1 Cython 142.2.2 Jython 142.2.3 PyPy 142.3 Python 2和Python 3 142.4 安装Python 152.5 Python发行版 152.5.1 Anaconda 152.5.2 Enthought Canopy 162.5.3 Python(x,y) 172.6 使用Python 172.6.1 Python shell 17

python数据分析实战-第9章-数据分析实例气象数据

第9章 数据分析实例--气象数据 2309.1 待检验的假设:靠海对气候的影响 2309.2 数据源 2339.3 用IPython Notebook做数据分析 2349.4 风向频率玫瑰图 2469.5 小结 251 123 import numpy as npimport pandas as pdimport datetime 1 ferrara = pd.read_json('http://api.openweathermap.org/data/2.5/history/city?q=Fer

python数据分析实战-第7章-用matplotlib实现数据可视化

第7章 用matplotlib实现数据可视化 149 7.1 matplotlib库 149 7.2 安装 150 7.3 IPython和IPython QtConsole 150 7.4 matplotlib架构 151 7.4.1 Backend层 152 7.4.2 Artist层 152 7.4.3 Scripting层(pyplot) 153 7.4.4 pylab和pyplot 153 7.5 pyplot 154 7.5.1 生成一幅简单的交互式图表 154 123 import

python数据分析实战-第6章-深入pandas数据处理

第6章 深入pandas:数据处理 117 6.1 数据准备 117 合并 1234567891011 #merge是两个dataframe共同包含的项import numpy as npimport pandas as pdframe1 = pd.DataFrame( {'id':['ball','pencil','pen','mug','ashtray'], 'price': [12.33,11.44,33.21,13.23,33.62]})print(frame1)print()frame

【python数据分析实战】电影票房数据分析(一)数据采集

目录 1.获取url 2.开始采集 3.存入mysql 本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析. 1.获取url 我们先打开猫眼票房http://piaofang.maoyan.com/dashboard?date=2019-10-22 ,查看当日票房信息, 但是在通过xpath对该url进行解析时发现获取不到数据. 于是按F12打开Chrome DevTool,按照如下步骤抓包 再打开获取到的url:http://pf.maoyan.com/second-bo

【python数据分析实战】电影票房数据分析(二)数据可视化

目录 图1 每年的月票房走势图 图2 年票房总值.上映影片总数及观影人次 图3 单片总票房及日均票房 图4 单片票房及上映月份关系图 在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来并做成动态可视化. 图1 每年的月票房走势图 第一张图,我们要看一下每月的票房走势,毫无疑问要做成折线图,将近10年的票房数据放在一张图上展示. 数据抽取: 采集到的票房数据是

《Python数据分析实战》3 NumPy库

初始化数组 arr = np.array([[1,2],[3,4]]) arr = np.array([[1,2],[3,4]], dtype=complex) arr = np.zeros((3,4)) arr = np.ones((1,2)) arr = np.arange(4,10).reshape(2,3) arr = np.linspace(0,1,6)  #[0.0,0.2,0.4,0.6,0.8,1.0] arr = np.random.random(3) arr = np.ran

萌新向Python数据分析及数据挖掘 第一章 Python基础 (上)未排版

因word和博客编辑器格式不能完全对接,正在重新排版,2019年1月1日发出第一章完整版 本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 python安装以及环境搭建 python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不

萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型

本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 第一节 Python安装以及环境搭建 Python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不错的选择. Anaconda详细安装使用教程 https://blog.csdn.