Python numpy多维数组实现原理详解

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。今天就针对多维数组展开来写博客numpy其一部分功能如下:

1.ndarray,是具有矢量算术运算且节省空间的多维数组。

2.可以用于对整组的数据快速进行运算的辨准数学函数。

3.能够用于读写磁盘数据的工具以及用于操作系统内存映射的工具。

NumPy它本身其实没有提供很高级别的数据分析功能,NumPy之于数值计算特别重要的原因之一,就是因为它能够高效的处理大数组的数据。这是因为:

1.NumPy是在一个连续的内存块中存储数据,独立于其他的Python内置对象。

2.NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。

NumPy的ndarray:一种多维数组对象

对数组进行数学运算

可以看到data的值实际是没有改变的,输出的结果只是临时结果而已。

ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。

每个数组都有一个shape(形状)和一个dtype(数据类型)。

查看ndarray的shape和dtype:

创建ndarray

创建数组最简单的办法就是使用array函数。

它接受一切序列型的对象(包括其它数组),然后产生一个新的含有传入数据的NumPy数组。

除np.array之外,还有一些函数也可以新建数组。

比如,zero和ones分别可以创建指定长度或形状的全0或全1数组。

empty可以用来创建一个没有任何具体指的数组。

要用这些方法创建多维数组,只需要传入一个表示形状的元组即可:

arange是Python内置函数range的数组版:

以下是一些数组创建函数。

由于NumPy关注的是数值计算

因此,如果没有特别指定,数据类型基本都是float64(浮点数)。

通过astype转变一个数组的dtype

如果将浮点数转换成整数,则小数部分将会被截除。

如果某字符串数组表示的全是数字,也可以用astype将其转换为数值形式。

调用astype总会创建一个新的数组(一个数据的备份),即使新的dtype与旧的dtype相同。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python Numpy 自然数填充数组的实现

    今天学习Numpy时,想到了一个小问题.在Numpy中,随机生成array是比较容易的,用np.random.rand即可.如下 a = np.random.rand(3,4) 可得 array([[ 0.05301444, 0.88175316, 0.01061948, 0.52498083], [ 0.51335312, 0.60080174, 0.66578974, 0.88035774], [ 0.16772843, 0.04972805, 0.10598578, 0.54610643]

  • python 实现将Numpy数组保存为图像

    第一种方案 可以使用scipy.misc,代码如下: import scipy.misc misc.imsave('out.jpg', image_array) 上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色.如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为: import scipy.misc misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg') 第二种方案 使用P

  • python numpy--数组的组合和分割实例

    数组的组合主要有: 1.水平组合:np.hstack(arr1,arr2) 或 concatenate(arr1,arr2,axis=1) 2.垂直组合:np.vstack(arr1,arr2) 或 concatenate(arr1,arr2,axis=0) 3.深度组合:np.dstack(arr1,arr2) 4.列组合:np.column_stack(arr1,arr2) 5.行组合:np.row_stack(arr1,arr2) 数组的分割主要有: 1.水平分割:np.split(arr

  • python numpy数组复制使用实例解析

    这篇文章主要介绍了python numpy数组复制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用python时我们经常会处理数组,有的时候是复制有的时候不是,这里也是初学者最容易误解的地方,简单讲,可以分为下面三种情况: 不是复制的情况(No Copy at All) import numpy as np a = np.arange(12) #a为一个序列 b = a #没有创建新的对象 print('a的shape为:',

  • Python Numpy数组扩展repeat和tile使用实例解析

    这篇文章主要介绍了Python Numpy数组扩展repeat和tile使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 numpy.repeat 官方文档 numpy.repeat(a, repeats, axis=None) Repeat elements of an array. 可以看出repeat函数是操作数组中的每一个元素,进行元素的复制. 例如: >>> a = np.arange(3) >>>

  • python numpy数组中的复制知识解析

    这篇文章主要介绍了python numpy数组中的复制知识解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 vector = numpy.array([5, 10, 15, 20]) equal_to_ten_or_five = (vector == 10) | (vector == 5) vector[equal_to_ten_or_five] = 50 print(vector) 第一次看到这个的时候一脸懵逼,后来分析了下懂了下面记录下,

  • Python numpy多维数组实现原理详解

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.今天就针对多维数组展开来写博客numpy其一部分功能如下: 1.ndarray,是具有矢量算术运算且节省空间的多维数组. 2.可以用于对整组的数据快速进行运算的辨准数学函数. 3.能够用于读写磁盘数据的工具以及用于操作系统内存映射的工具. NumPy它本身其实没有提供很高级别的数据分析功能,NumPy之于数值计算特别重要的原因之一,就是因为

  • Python NumPy教程之数组的基本操作详解

    目录 Numpy中的N维数组(ndarray) 数组创建 数组索引 基本操作 数据类型 Numpy中的N维数组(ndarray) Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引.在 Numpy 中,数组的维数称为数组的秩.给出数组沿每个维的大小的整数元组称为数组的形状.Numpy 中的数组类称为ndarray.Numpy 数组中的元素可以使用方括号访问,并且可以使用嵌套的 Python 列表进行初始化. 例子 : [[ 1, 2, 3], [ 4, 2, 5]

  • Python NumPy教程之数组的创建详解

    目录 使用 List 创建数组 使用数组函数创建数组 使用 numpy 方法创建数组 重塑数组 展平数组 在 Numpy 中创建数组的方法 使用 List 创建数组 数组用于在一个变量中存储多个值.Python 没有对数组的内置支持,但可以使用 Python 列表代替. 例子 : arr = [1, 2, 3, 4, 5] arr1 = ["geeks", "for", "geeks"] # 用于创建数组的 Python 程序 # 使用列表创建数

  • python生成二维码的实例详解

    python生成二维码的实例详解 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime Text 3 依赖库 Python生成二维码需要的依赖库为PIL和QRcode. 坑爹的是,百度了好久都没有找到PIL,不知道是什么时候改名了,还是其他原因,pillow就是传说中的PIL. 安装命令:sudo pip install pillow.sudo pip install qrcode 验证是否安装成功,使用命令from PIL import

  • Python代码块及缓存机制原理详解

    这篇文章主要介绍了Python代码块及缓存机制原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.相同的字符串在Python中地址相同 s1 = 'panda' s2 = 'panda' print(s1 == s2) #True print(id(s1) == id (s2)) #True 2.代码块: 所有的代码都需要依赖代码块执行. ​ 一个模块,一个函数,一个类,一个文件等都是一个代码块 ​ 交互式命令中, 一行就是一个代码块

  • Python+NumPy绘制常见曲线的方法详解

    目录 一.利萨茹曲线 二.计算斐波那契数列 三.方波 四.锯齿波和三角波 在NumPy中,所有的标准三角函数如sin.cos.tan等均有对应的通用函数. 一.利萨茹曲线 (Lissajous curve)利萨茹曲线是一种很有趣的使用三角函数的方式(示波器上显示出利萨茹曲线).利萨茹曲线由以下参数方程定义: x = A sin(at + n/2) y = B sin(bt) 利萨茹曲线的参数包括 A . B . a 和 b .为简单起见,我们令 A 和 B 均为1,设置的参数为 a=9 , b=

  • Python生成二维码的教程详解

    目录 交代背景 pyqrcode 实现二维码 qrcode 实现二维码 MyQR 实现二维码 Amazing-QR 实现二维码 交代背景 作为一名合格的 Python 程序员,在工作中必然会用到二维码相关操作,那如何快速的用 Python 实现呢?别着急,咱们这篇博客就为你解决. 文章会为大家带来最常见,最简单,最实用的 4 种 Python 二维码生成方式. pyqrcode 实现二维码 上来为你展示的就是一款第三方二维码模块,开源高效才是当今编码界的主流. pyqrcode 是一款 老牌 二

  • Python进阶之import导入机制原理详解

    目录 前言 1. Module组成 1.1 Module 内置全局变量 2. 包package 2.1 实战案例 3.sys.modules.命名空间 3.1 sys.modules 3.2 命名空间 4. 导入 4.1 绝对导入 4.2 相对导入 4.3 单独导入包 5. import运行机制 5.1 标准import,顶部导入 5.2 嵌套import 前言 在Python中,一个.py文件代表一个Module.在Module中可以是任何的符合Python文件格式的Python脚本.了解Mo

  • java二维数组基础知识详解

    目录 1. 查找 2. 顺序查找 3. 二分查找 4. 多维数组 4.1 二维数组 175 4.2 二维数组细节 5. 二维数组的使用方式 176 6. 二维数组的动态初始化 1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小] 2.动态初始化-列数不确定 178 7. 二维数组的静态初始化 179 8. 二维数组练习 180 8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和 1. 查找 1) 顺

  • Python Numpy库datetime类型的处理详解

    前言 关于时间的处理,Python中自带的处理时间的模块就有time .datetime.calendar,另外还有扩展的第三方库,如dateutil等等.通过这些途径可以随心所欲地用Python去处理时间.当我们用NumPy库做数据分析时,如何转换时间呢? 在NumPy 1.7版本开始,它的核心数组(ndarray)对象支持datetime相关功能,由于'datetime'这个数据类型名称已经在Python自带的datetime模块中使用了, NumPy中时间数据的类型称为'datetime6

随机推荐