利用python进行数据分析——Numpy基础

利用Python进行数据分析笔记-Numpy基础 跟着教程学习了一段时间数据分析,越学感觉坑越多。于是花了一个星期仔细看了下《利用Python进行数据分析》。写在这里主要是记录下,方便自己查看。 import matplotlib.pyplot as plt import numpy as np 创建n维数组 1、使用array函数 最简单的方法使用array函数,输入一个序列即可,比如list # 随机生成数据 data = ... 阅读详情

这里主要是对《利用python进行数据分析》的学习,原书的电子版地址为:

https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version
不知道这个项目是不是译者或者是什么好心人整理的。

这里主要记录下Numpy的常用内容。

ndarray

ndarray创建

ndarray对象的创建可以通过array函数完成,通过传入序列型对象,就可以据此产生对应的numpy数组。

一维数组
a = np.array(range(10))
print(a, type(a), a.shape, a.ndim)

结果为:

[0 1 2 3 4 5 6 7 8 9] <class 'numpy.ndarray'> (10,) 1
二维数组

二维数组可以通过传入多个嵌套序列进行转换:

a = np.array([range(10), range(10,20)])
print(a, type(a), a.shape, a.ndim)

结果为:

[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]] <class 'numpy.ndarray'> (2, 10) 2

也可以将一维数组转换为多维数组:

a = np.array(range(10)).reshape(1,10)
print(a, type(a), a.shape, a.ndim)

结果为:

[[0 1 2 3 4 5 6 7 8 9]] <class 'numpy.ndarray'> (1, 10) 2
dtype

保存在ndarray中的数据会有自己的数据类型,也可以指定对应的数据类型,该数据类型以dtype类型对象的形式封装:

a = np.array(range(10)).reshape(1,10)
print(a, a.dtype, type(a.dtype))

结果为:

[[0 1 2 3 4 5 6 7 8 9]] int32 <class 'numpy.dtype'>

这个是默认的推断数据类型,也可以指定数据类型:

a = np.array(range(10), dtype=np.float64).reshape(1,10)
print(a, a.dtype, type(a.dtype))

结果为:

[[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]] float64 <class 'numpy.dtype'>

numpy中数据类型有:

astype、asarray
  • astype:可以将ndarray对象的数据类型转换为其它数据类型
  • asarray:可以将序列类型转换为ndarray数组
np.array(range(4), dtype = np.int16).reshape(2,2).astype(np.float32)

 结果为:

array([[0., 1.],
       [2., 3.]], dtype=float32)

不过有时候转换时会进行数据转换的处理,比如float转int就会截断小数部分,如果不能完成转换,就会报ValueError。

asarray则可以将序列类型转换为ndarray数组:

np.asarray(range(4), dtype = np.float32).reshape(2,2)

结果为:

array([[0., 1.],
       [2., 3.]], dtype=float32)
 zeros、ones、empty、arange、eye
  • zeros:可以创建指定长度或形状的全0或全1数组
  • ones:可以创建指定长度或形状的全0或全1数组
  • empty:可以创建一个没有任何具体值的数组,即未初始化的垃圾值
  • arange:类似内置的range函数
  • eye:单位矩阵
a = np.zeros([2,2])
b = np.ones([2,2])
c = np.empty([2,2])
d = np.arange(4)
e = np.eye(2)
print(a,b,c,d,e,sep="\n\n")

结果为:

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

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

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

[0 1 2 3]

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

即zeros、ones、empty需要传入的参数为shape(表示数组维度的元组类型即可)。一些常见的数组生成函数有:

表4-1 数组创建函数

numpy数组运算
算术运算

大小相等的数组之间的任何算术运算都会将运算应用到对应元素:

a = np.array(range(9)).reshape(3,3)
print(a, a + a, a*a, sep="\n\n")

结果为:

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

[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]]

[[ 0  1  4]
 [ 9 16 25]
 [36 49 64]]

数组与标量的算术运算会将标量值传播到各个元素:

a = np.array(range(1,10)).reshape(3,3)
print(a, a * 2, 1 / a, sep="\n\n")

结果为:

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

[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]

[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]
 [0.14285714 0.125      0.11111111]]
布尔运算

大小相同的数组之间的比较会生成布尔值数组:

a = np.array(range(1,10)).reshape(3,3)
b = np.array(range(9,0,-1)).reshape(3,3)
print(a, b, a>b, sep = "\n\n")

结果为:

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

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

[[False False False]
 [False False  True]
 [ True  True  True]]

数组与标量的布尔运算会将标量值传播到各个元素:

a = np.array(range(1,10)).reshape(3,3)
print(a, a>5, sep = "\n\n")

结果为:

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

[[False False False]
 [False False  True]
 [ True  True  True]]
广播机制

不同大小的数组之间的运算叫做广播。

a = np.array(range(1,10)).reshape(3,3)
b = np.array(range(3,6))
print(a, b, a + b, a/b, a>b, sep = "\n\n")

结果为:

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

[3 4 5]

[[ 4  6  8]
 [ 7  9 11]
 [10 12 14]]

[[0.33333333 0.5        0.6       ]
 [1.33333333 1.25       1.2       ]
 [2.33333333 2.         1.8       ]]

[[False False False]
 [ True  True  True]
 [ True  True  True]]

广播机制的详细说明可以参考:Python 中 NumPy 的广播_numpy中的广播-优快云博客

numpy索引和切片

在二维数组中,轴0表示行方向,即垂直方向,1表示列方向,即水平方向。

一维数组的索引和切片和列表等的方式是一样的,这里主要看二维数组。

基本索引和切片索引
a = np.array(range(1,10)).reshape(3,3)
print(a,a[:],a[1],a[:,1],a[1,1],a[0:2,0:2],sep="\n\n")

结果为:

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

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

[4 5 6]

[2 5 8]

5

[[1 2]
 [4 5]]

从上面可以看出:

  • 二维数组是有两个维度的,因此需要从两个方向上进行索引
  • 同时也支持切片的形式
  • 单独一个冒号表示所有元素
  • 单独一个索引表示按行索引,按列索引需要使用冒号:固定行

同样写成下面的形式也是等效的:

a = np.array(range(1,10)).reshape(3,3)
print(a,a[:][:],a[1][:],a[:][:,1],a[1][1],a[0:2][:,0:2],sep="\n\n")

这种写法只是按行先获得了原数组的子集,然后再在该子集中获得对应的子集,没有上一种形式好用。

同时切片获取的是原数组的视图,因此如果是通过切片进行赋值修改,会直接反映到原数组上:

a = np.array(range(1,10)).reshape(3,3)
a[0:2,0:2] = 10
print(a,a[:],a[1,1],a[0:2,0:2],sep="\n\n")

结果为:

[[10 10  3]
 [10 10  6]
 [ 7  8  9]]

[[10 10  3]
 [10 10  6]
 [ 7  8  9]]

10

[[10 10]
 [10 10]]

这样的结果也会发生在新建变量的赋值修改中:

a = np.array(range(1,10)).reshape(3,3)
b = a[0:2,0:2]
b[1,1] = 10
print(a,b,sep="\n\n")

结果为:

[[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

[[ 1  2]
 [ 4 10]]

如果要获取副本的话,应该使用copy:

a = np.array(range(1,10)).reshape(3,3)
b = a.copy()
b[0:2,0:2]=10
print(a,b,sep="\n\n")

结果为:

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

[[10 10  3]
 [10 10  6]
 [ 7  8  9]]
布尔型索引

将布尔值变量与数组结合起来也可以对原数组进行索引:

a = np.array(range(1,10)).reshape(3,3)
a[a>5] = 10
print(a[a>5],a,sep="\n\n")

结果为:

[10 10 10 10]

[[ 1  2  3]
 [ 4  5 10]
 [10 10 10]]

或者是直接传入布尔型变量:

a = np.array(range(1,10)).reshape(3,3)
b = [True, True, False]
print(a[b,:],sep="\n\n")

结果为: 

[[1 2 3]
 [4 5 6]]

花式索引

在numpy,通过使用整数数组来进行索引称为花式索引:

a = np.array(range(1,26)).reshape(5,5)
print(a,a[[2,4,3]],sep="\n\n")

结果为:

[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

[[11 12 13 14 15]
 [21 22 23 24 25]
 [16 17 18 19 20]]

即使用整数数组进行索引,会按照行索引的形式重新组织数据。

也可以按照坐标的形式选择:

a = np.array(range(1,26)).reshape(5,5)
print(a,a[[2,4,1,3],[4,2,1,3]],sep="\n\n")

结果为:

[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

[15 23  7 19]

同时负数索引表示逆序:

a = np.array(range(1,26)).reshape(5,5)
print(a,a[[-2,-4,-3]],sep="\n\n")

结果为:

[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

[[16 17 18 19 20]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]

也可以利用该索引方式调整各列的位置:

a = np.array(range(1,26)).reshape(5,5)
print(a,a[:,[-5,-2,-4,-3,-1]],sep="\n\n")

结果为:

[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

[[ 1  4  2  3  5]
 [ 6  9  7  8 10]
 [11 14 12 13 15]
 [16 19 17 18 20]
 [21 24 22 23 25]]
转置

在线性代数中,经常会用到转置的概念,在numpy中,转置可以通过T属性、transpose方法或者swapaxes方法实现:

a = np.array(range(1,10)).reshape(3,3)
print(a,a.T,a.transpose(1,0),a.swapaxes(0,1),sep="\n\n")

结果为:

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

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

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

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

transpose和swapaxes区别在于transpose可以调整多个轴的顺序,而swapaxes只能交换两根轴的顺序。

通用函数

通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数。

一元函数

常见的一元函数有:

这里看下modf,该函数会以数组的形式分别返回原数组的整数部分和小数部分:

a = np.random.randn(9).reshape(3,3) * 5
b,c = np.modf(a)
print(a,b,c,sep="\n\n")

结果为:

[[ 8.91763085  1.40326523  1.30172651]
 [-5.6311037  -5.72307123  5.8722108 ]
 [-4.67259404  0.5326401  -3.8980413 ]]

[[ 0.91763085  0.40326523  0.30172651]
 [-0.6311037  -0.72307123  0.8722108 ]
 [-0.67259404  0.5326401  -0.8980413 ]]

[[ 8.  1.  1.]
 [-5. -5.  5.]
 [-4.  0. -3.]]

 二元函数

常见的二元函数有: 

 

这里看下maximum的元素级比较是什么意思:

a = np.array(range(10))
b = np.array(range(9,-1,-1))
np.maximum(a,b)

结果为:

array([9, 8, 7, 6, 5, 5, 6, 7, 8, 9])

 即会在两个参数之间进行逐元素比较,然后将满足逻辑的值重新构成新的数组。

三元函数

需要注意的三元函数只有一个,就是where:

a = np.array(range(10))
b = np.array(range(9,-1,-1))

np.where(a>=4,a,b)

结果为:

array([9, 8, 7, 6, 4, 5, 6, 7, 8, 9])

该函数会按照第一个参数的逻辑计算分别从第二个参数和第三个参数中选择对应元素,然后填充到和第一个参数同等规模的数组中。

数学和统计方法

常见的统计方法有:

这些方法的默认方向也是行方向,即垂直方向,不过可以通过axis参数进行更改统计方向。

用于布尔型数组的方法

  • sum:用于对布尔型数组中的True值计数
  • any:用于判断布尔型数组中是否存在True
  • all:用于判断数组是否全部为True
a = np.random.randn(9).reshape(3,3) * 5
print(a,(a>5).sum(0),(a>5).any(0),(a>5).all(0),sep="\n\n")

如果需要计算某个轴向上的结果,需要指明是哪个轴。

排序

也是通过sort方法进行排序,不过需要注意的是,np.sort返回的是排序数组的副本,不会影响原数组,而通过数组调用sort方法则是直接对原数组进行排序:

a = np.random.randn(9).reshape(3,3) * 5
print(a)
print("*************************")
b = np.sort(a)
print(a,b,sep="\n\n")
print("*************************")
c = a.sort()
print(a,c,sep="\n\n")

结果为:

[[ 0.14847016  7.20760888  0.20309457]
 [-5.88711909 -7.05237145  3.13436338]
 [-5.43721813 -0.56226514 -1.19689088]]
*************************
[[ 0.14847016  7.20760888  0.20309457]
 [-5.88711909 -7.05237145  3.13436338]
 [-5.43721813 -0.56226514 -1.19689088]]

[[ 0.14847016  0.20309457  7.20760888]
 [-7.05237145 -5.88711909  3.13436338]
 [-5.43721813 -1.19689088 -0.56226514]]
*************************
[[ 0.14847016  0.20309457  7.20760888]
 [-7.05237145 -5.88711909  3.13436338]
 [-5.43721813 -1.19689088 -0.56226514]]

None

同样如果需要计算某个轴向上的结果,需要指明是哪个轴。

集合逻辑

这里提到的集合运算是针对一维数组的,主要有:

总体看来,和集合的运算差不多。

数据保存和读取

np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的。使用方式为:

a = np.array(range(9)).reshape(3,3)
np.save("a",a)

# other actions
np.load("a.npy")

 np.savez可以将多个数组保存到一个未压缩文件中,将数组以关键字参数的形式传入即可:

a = np.array(range(9)).reshape(3,3)
np.savez("a",var1 = a, var2 = a ** 2)

# other actions
a = np.load("a.npz")
print(a["var1"], a["var2"])

线性代数

线性代数的操作在数据分析中并不太常用,在一些机器学习的场景中可能会用到,主要会涉及到的的方法有:

另外上边的有些函数可能需要导入np.linalg才能够使用。

 伪随机数

numpy中的random模块能够生成伪随机数,并且还能够生成多种概率分布的样本值的函数。常用的函数有:

容器内存黑洞排查手册:当PageCache让你的Pod莫名被OOM时 本文深入剖析了容器环境中因Linux内核PageCache机制导致Pod被OOM Killer终止的“内存黑洞”问题。文章解释了Kubernetes基于Working Set内存指标进行OOM判断的逻辑,揭示了传统监控工具与cgroup统计的差异,并通过典型场景分析、实战诊断工具和优化策略,提供了从问题定位到系统调优的完整解决方案。 阅读详情

相关推荐

LiteOS | 基于LiteOS的智慧农业案例实验分享

分享一个基于小熊派+LiteOS+华为云的案例实验(智慧农业)。 实验框图 相关模块简介 1、STM32L431RCT6 2、LiteOS LiteOS是华为开发的轻量级实时操作系统: LiteOS源码GitHub仓库链接: https://github.com/LiteOS/LiteOS 其源码一级目录结构如下: 其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管...

嵌入式大杂烩 5990

Python数据分析之Numpy

Numpy的数组对象及其索引 数组上的数学操作 产生数组 数组属性 索引和切片 多维数组及其属性 多维数组索引 多维数组切片 切片是引用 花式索引 一维花式索引 二维花式索引 “不完全”索引 where语句 一维数组 数组类型 类型转换 asarray 函数 astype方法 数组操作 数组排序 均值 标准差 相关系数矩阵 4.多维数组操作 数组形状 转置 数组连接 Numpy内置函数

m0_54625820的博客 574

【开关电源篇】开关电源——只需这三个阶段,从电源小白到维修大神

🔌 该篇为的原创文章跳转目录,小二持续更新跳转链接,尽情关注!

2301_81299416的博客 2387

Python数据分析必备工具——Numpy模块

数组是编程中一种强大的数据结构,它允许您存储和操作相同类型元素的集合。在 Python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。特别的:矩阵是一种二维数组。

Eric005的博客 1256

【生产实践】PostgreSQL高可用Patroni安装(超详细已踩坑)

一 安装Patroni 0 Patroni 对Python的版本要求 我安装的是Patroni最新版本 :4.0.3,Patroni 对Python 版本有要求,没有具体的版本矩阵,但是根据每个版本发布信息可以得到以下信息 Patroni 4.0 需要 Python 3.8 以上(可以根据下面发布版本信息推理出) Version 3.0.2 Version 3.0.2 dropped support of Python older than 3.6. 版本3.0.2不再支持3.6版本以下的P

DBA之路的博客 1739

Python 爬虫实战:深入同花顺,抓取股票行情数据,助力投资决策

通过本次 Python 爬虫实战,我们成功地从同花顺抓取了股票行情数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分股票的数据,且未对股票的历史行情进行深入分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多股票的数据,并深入分析股票的历史行情走势、技术指标等,为投资者提供更有价值的数据支持。

u014481728的博客 5332

python数据分析之numpy

python数据分析之numpy

julac的博客 2030

Qt6.10 | Qt Bluetooth 蓝牙

本文介绍了QtBluetooth模块的功能和使用方法,包括蓝牙API概述、构建配置(CMake/qmake)、权限管理、平台支持(Linux/macOS特殊处理)、日志设置及许可信息。重点说明Linux平台的后端选择机制,以及macOS上的依赖限制。最后提及蓝牙聊天示例,展示RFCOMM协议通信的实现。全文提供了蓝牙开发的技术要点和注意事项。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 399

Python数据分析之numpy(保姆级教程)

Python数据分析之numpy

Elon15的博客 3359

14 | TensorFlow2对阿拉伯语手写字符数据集进行识别

该数据集由 60 名参与者书写的16,800 个字符组成,年龄范围在 19 至 40 岁之间,90% 的参与者是右手。每个参与者在两种形式上写下每个字符(从“alef”到“yeh”)十次,如图 7(a)和 7(b)所示。表格以 300 dpi 的分辨率扫描。使用 Matlab 2016a 自动分割每个块以确定每个块的坐标。该数据库分为两组:训练集(每类 13,440 个字符到 480 个图像)和测试集(每类 3,360 个字符到 120 个图像)。数据标签为1到28个类别。

微信号:RunsenLiu 2876

【QT/C++】事件过滤器之基于重写 eventFilter 方法的多种常见应用场景及实现

Qt事件过滤器通过重写eventFilter方法实现多种实用功能:1)鼠标事件处理(点击全选文本、禁用滚轮、悬停提示);2)键盘事件处理(输入内容限制、快捷键提交);3)焦点事件处理(自动弹出下拉框、实时验证);4)绘图事件处理(自定义控件绘制);5)窗口事件处理(防止意外关闭、尺寸限制)。事件过滤器提供非侵入式的事件处理方案,相比传统子类化方式更灵活,通过installEventFilter安装到目标控件即可实现各种交互增强功能。

yuhuasheng1997的博客 1483

数据分析---Python科学计算库-Numpy学习(一)

NumPy是一个Python库,用于科学计算和数值计算。它为Python提供了一个强大的多维数组对象和一系列的函数,用于处理这些数组。NumPy是科学计算领域中最为常用的Python库之一,因为它可以让开发者高效地处理数值数据,包括线性代数、傅里叶变换和随机数生成等操作。

泰勒今天想展开的博客 1461

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【利用Python进行数据分析】4 NumPy基础

NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及...

小狐狸 3322

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

利用python进行数据分析 python基础 Numpy基础

结构化数据 表格型数据,其中各列可能是不同的类型(字符串,数值,日期等)。比如保存在关系型数据库中或以制表符/逗号为分隔符的文本文件中的那些数据。 多维数组(矩阵) 通过关键列(对于SQL用户来说,就是主键和外键)相互联系的多个表 间隔平均或不平均的时间序列。 Numpy介绍 Numpy是python科学计算的基础包。它提供了以下功能: 1 快速高效的多维数组对象ndarrary 2 用于对...

qq_28758893的博客 630

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

numpy基础-利用python进行数据分析

git下载地址https://github.com/codebysandwich/DataScience

码码的哈士奇 763

《利用Python 进行数据分析》第四章:Numpy基础

       对《利用Python 进行数据分析》(Wes Mckinney著)一书中的第四章中Numpy基础进行代码实验。原书中采用的是Python2.7,而我采用的Python3.7利用Pycharm调试的,因此对书中源代码进行了一定的修改,每步打印结果原文校验对照一致(部分打印结果已经关闭,需要查看结果则可以打开)供参考。 #-*- coding:utf-8 -*- import numpy as np # Numpy基础:数组和矢量计算

南洲.的博客 683

阅读笔记:利用Python进行数据分析第2版——第4章 Numpy基础:数组和矢量计算

大小相等的数组之间的任何算术运算都会将运算应用到元素级。 数组与标量的算术运算会将标量值传播到各个元素。 大小相同的数组之间的比较会生成布尔值数组。 不同大小的数组之间的运算叫做广播( broadcasting),当你将一个标量值赋值给一个切片时( 如arr[5:8]=12),该值会自动传播( 也就说后面将会讲到的“广播”)到整个选区。 跟列表最重要的区别在于,数组切片是原始数组的视图。 这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。 如果你想要得到的是ndarray切片的一份副本而非视.

明月清風 1484

利用Python进行数据分析——numpy基础(1)

1、 NumPy基础:数组与向量化计算   NumPy,是Numerical Python的简称,它是目前Python数值计算中最为重要的基础包。使用numpy模块处理含有大量数组的数据非常有效: In [1]: import numpy as np In [3]: arr = np.arange(1000000) In [4]: l = list(range(1000000)) In [3]: %time for _ in range(10): arr * 2 # Wall time: 28.9 ms I

bwqiang的博客 287

啃书:《利用python进行数据分析》第四章——Numpy基础

NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。NumPy的部分功能如下:由于NumPy提供了一个简单易用的C API,因此很容易将数据传递给由低级语言编写的外部库,外部库也能以NumPy数组的形式将数据返回给Python。这个功能使Python成为一种包装C/C++/Fortran历史代码库的选择,并使被包装库拥有一个动态的、易用的接口。NumPy本身并没有提供多么高级的数据分析功能,理解NumPy数组以及

掘金同名!! 1476

python numpy.diff_利用python进行数据分析之numpy基础

在准备工作完成后,进一步就是了解numpy的基本用法,这篇文章主要是做一个简单的知识点梳理,不展开。numpy首先,numpy 的核心特征之一就是N-维数组对象-ndarray。ndarray是python中的一个快速灵活的大型数据集容器,可以允许你使用类似于标量的操作语法在整块数据上进行数学计算。如果用 python 的列表和字典来作比较, 那么可以说 Numpy 是列表形式的,没有数值标签,而...

weixin_39752788的博客 304

利用python进行数据分析-NumPy基础

NumPy的ndarray:一种多维数组对象 1.创建ndarray data1=[6,7.5,8,0,1] arr1=np.array(data1) print arr1 结果为: [ 6.   7.5  8.   0.   1. ] data2=[[1,2,3,4],[5,6,7,8]] arr2=np.array(data2) print arr2 结果为

zhuhengv的博客 1750

利用python进行数据分析 | numpy基础

numpy基础

happylls666的博客 932

《利用Python进行数据分析》系列二——Numpy基础

这里主要讲下numpy的一些基础操作,即书籍的第4章内容。 1. 创建数组对象的方式 其他方式: # 创建10个全为0的数组 np.zeros(10) # array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) # 创建全为0的二维数组 np.zeros((3, 6)) # array([[ ...

qq_24140919的博客 358

利用Python做数据分析——numpy基础

安装Numpy的方法: 点击win+R+cmd, 输入pip install numpy --------------------------------------------------------------------------------------------------------------------------- Python列表在表示数据时提供了一些优势:

birdflyinhigh的博客 1405

《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算

写在前面的话:实例中的所有数据都是在GitHub上下载的,打包下载即可。 地址是:http://github.com/pydata/pydata-book还有一定要说明的:我使用的是Python2.7,书中的代码有一些有错误,我使用自己的2.7版本调通。# coding: utf-8 import numpy as npdata1 = [6.,7.5,8.,0.,1.] arr1 = np.ar

wangshuang1631的博客 4105

利用Python进行数据分析-NumPy基础

本文出自<利用Python进行数据分析 第2版>  侵删 NumPy NumPy 是Python数值计算最重要的基础包,可以高效处理大数组的数据. NumPy的ndarray:一种多维的数组对象 ndarray是一个快速而又灵活的同构数据多维容器,是一个N维数组对象,其中所有的元素对象必须要是相同的数据类型,每一个对象包含一个元组和一个属性,分别是shape(一个表示各维度...

wt的博客 365
上一篇: python第三方库——datetime
下一篇: 利用python进行数据分析——pandas基础
止步听风
博客等级 码龄7年 761粉丝 373原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值