首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NumPy 1.26 中文文档(四十一)

argsort(a[, axis, kind, order]) 返回对数组进行排序的索引。 ndarray.sort([axis, kind, order]) 在原地对数组进行排序。...Timsort 用于在已经或几乎排序的数据上获得更好的性能。在随机数据上,timsort 几乎与 mergesort 相同。现在它用于稳定排序,而 quicksort 仍然是默认排序(如果没有选择)。...它返回一个与 a 相同形状的索引数组,按照分区顺序索引给定轴上的数据。 自版本 1.8.0 起新增。 参数: a类似数组 要排序的数组。 kth整数或整数序列 要按其进行分区的元素索引。...返回一个数组的元组,每个维度都包含该维度中非零元素的下标。 a 中的值始终以行为主测试和返回,C 样式排序。 要按元素而不是维度对下标进行分组,请使用argwhere,其将为每个非零元素返回一行。...axis可以是负数,此时它从最后一个轴向第一个轴计数。 版本 1.15.0 中新增。 如果这是一组 int 型的元组,则将对多个轴进行归约,而不是像以前那样对单个轴或所有轴进行归约。

25910

《利用Python进行数据分析·第2版》 附录A NumPy高级应用A.1 ndarray对象的内部机理A.2 高级数组操作A.3 广播A.4 ufunc高级应用A.5 结构化和记录式数组A.6 更多

默认情况下,NumPy数组是按行优先顺序创建的。在空间方面,这就意味着,对于一个二维数组,每行中的数据项是被存放在相邻内存位置上的。...图A-5 二维数组在轴1上的广播 图A-6展示了另外一种情况,这次是在一个三维数组上沿0轴向加上一个二维数组。 ?...图A-6 三维数组在轴0上的广播 沿其它轴向广播 高维度数组的广播似乎更难以理解,而实际上它也是遵循广播原则的。...给定一个或多个键,你就可以得到一个由整数组成的索引数组(我亲切地称之为索引器),其中的索引值说明了数据在新顺序下的位置。argsort和numpy.lexsort就是实现该功能的两个主要方法。...NumPy实现了一个类似于ndarray的memmap对象,它允许将大文件分成小段进行读写,而不是一次性将整个数组读入内存。

4.9K71
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Numpy中的索引与排序

    花哨的索引探索花哨的索引组合索引Example:选择随机点利用花哨索引修改值数组排序Numpy中的快速排序:np.sort,np.argsort部分排序:分割 花哨的索引 花哨的索引和前面那些简单的索引非常类似..., 但是传递的是索引数组, 而不是单个标量。...花哨的索引让我们能够快速获得并修改复杂的数组值的子数据集。 探索花哨的索引 花哨的索引在概念上非常简单, 它意味着传递一个索引数组来一次性获得多个数组元素。...另一个可以实现该功能的类似方法是通用函数中的 reduceat() 函数, 你可以在 NumPy 文档中找到关于该函数的更多信息。...# np.argsort返回的是原来数组排好序的索引值 x = np.array([, , , , ]) i = np.argsort(x) print(i) [ ] # 通过花哨索引创建有序数组

    2.5K20

    看图学NumPy:掌握n维数组基础知识点,看这一篇就够了

    有时我们需要创建一个空数组,大小和元素类型与现有数组相同: ? 实际上,所有用常量填充创建的数组的函数都有一个_like对应项,来创建相同类型的常数数组: ?...但是当涉及一维数组与矩阵之间的混合堆叠时,vstack可以正常工作:hstack会出现尺寸不匹配错误。 因为如上所述,一维数组被解释为行向量,而不是列向量。...不过NumPy具有多个函数,允许按列进行排序: 1、按第一列对数组排序:a[a[:,0].argsort()] ? argsort排序后,此处返回原始数组的索引数组。...如果不方便使用axis,可以将数组转换硬编码为hstack的形式: ? 这种转换没有实际的复制发生。它只是混合索引的顺序。 混合索引顺序的另一个操作是数组转置。检查它可能会让我们对三维数组更加熟悉。...最后,还有一个函数,可以在处理多维数组时节省很多Python循环,并使代码更简洁,这就是爱因斯坦求和函数einsum: ? 它将沿重复索引的数组求和。

    6K20

    数据科学 IPython 笔记本 9.10 数组排序

    然后,如果需要,可以使用这些索引(通过花式索引)构造有序数组: x[i] # array([1, 2, 3, 4, 5]) 沿行或列的排序 NumPy 排序算法的一个有用特性是,能够使用axis参数来排序多维数组的特定行或列...示例:K 最近邻 让我们快速了解如何沿着多个轴使用这个argsort函数,来查找集合中每个点的最近邻居。我们首先在二维平面上创建一组 10 个随机点。...你可能会尝试通过手动循环数据,并单独对每组邻居进行排序,来执行相同类型的操作,但这几乎肯定会产生比我们使用的向量化版本更慢的算法。...最后,我会注意到,在进行非常大的最近邻搜索时,有基于树的算法和/或近似算法,可以变为O(nlogn)或更好,而不是O(n^2)的暴力算法。...在比较算法的性能时,即使是这个松散版本的大 O 记号也非常有用,在讨论算法如何扩展时,我们将在整本书中使用这种记号。

    1.8K10

    Seq2seq强化,Pointer Network简介

    源/ATYUN订阅号 Pointer Network(为方便起见以下称为指针网络)是seq2seq模型的一个变种。他们不是把一个序列转换成另一个序列, 而是产生一系列指向输入序列元素的指针。...作者发现,它对结果影响很大, 这不是我们想要的。因为本质上我们处理的是集合作为输入, 而不是序列。集合没有固定的顺序,所以元素是如何排列在理论上不应该影响结果。...而一个对少量数字进行训练的网络并不能概括更大的, 比如: 981,66,673 856,10,438 884,808,241 为了帮助网络使用数字, 我们添加一个 ID (1,2, 3…) 到序列的每个元素...实验代码在GitHub可以使用。与original repo相比, 我们添加了一个数据生成脚本, 并更改了训练脚本以从生成的文件中加载数据。...,我们一直在讨论循环网络如何处理可变长度的序列,但实际上数据是3D数组,如上所示。

    1.3K60

    Seq2seq模型的一个变种网络:Pointer Network的简单介绍

    Pointer Network(为方便起见以下称为指针网络)是seq2seq模型的一个变种。他们不是把一个序列转换成另一个序列, 而是产生一系列指向输入序列元素的指针。...作者发现,它对结果影响很大, 这不是我们想要的。因为本质上我们处理的是集合作为输入, 而不是序列。集合没有固定的顺序,所以元素是如何排列在理论上不应该影响结果。...而一个对少量数字进行训练的网络并不能概括更大的, 比如: 981,66,673 856,10,438 884,808,241 为了帮助网络使用数字, 我们添加一个 ID (1,2, 3…) 到序列的每个元素...实验代码在GitHub可以使用。与original repo相比, 我们添加了一个数据生成脚本, 并更改了训练脚本以从生成的文件中加载数据。...,我们一直在讨论循环网络如何处理可变长度的序列,但实际上数据是3D数组,如上所示。

    1.8K50

    图解NumPy:常用函数的内在机制

    不过,使用 linspace 时会遇到一个常见的陷阱:它统计的是数据点的数量,而不是区间,因此其最后一个参数 num 通常比你所想的数大 1。因此,上面最后一个例子中的数是 11,而不是 10。...,而不是列向量。...除了在二维或三维网格上初始化函数,网格也可用于索引数组: 使用 meshgrid 索引数组,也适用于稀疏网格。...但幸运的是,NumPy 提供了一些支持按列排序的辅助函数——或有需要的话可按多列排序: 1. a[a[:,0].argsort()] 可按第一列对数组排序: 这里 argsort 会返回原数组排序后的索引的数组...a[:,0].argsort(kind='stable')] 2. lexsort 函数能使用上述方式根据所有列进行排序,但它总是按行执行,而且所要排序的行的顺序是反向的(即自下而上),因此使用它时会有些不自然

    3.7K10

    图解NumPy:常用函数的内在机制

    不过,使用 linspace 时会遇到一个常见的陷阱:它统计的是数据点的数量,而不是区间,因此其最后一个参数 num 通常比你所想的数大 1。因此,上面最后一个例子中的数是 11,而不是 10。...,而不是列向量。...矩阵排序 axis 参数虽然对上面列出的函数很有用,但对排序毫无用处: 使用 Python 列表和 NumPy 数组执行排序的比较 这通常不是你在排序矩阵或电子表格时希望看到的结果:axis 根本不能替代...但幸运的是,NumPy 提供了一些支持按列排序的辅助函数——或有需要的话可按多列排序: 1. a[a[:,0].argsort()] 可按第一列对数组排序: 这里 argsort 会返回原数组排序后的索引的数组...a[:,0].argsort(kind='stable')] 2. lexsort 函数能使用上述方式根据所有列进行排序,但它总是按行执行,而且所要排序的行的顺序是反向的(即自下而上),因此使用它时会有些不自然

    3.3K20

    【深度学习】NumPy详解(四):4、数组广播;5、排序操作

    本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容: Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类 Numpy:数组创建、数组操作、数组数学、...如果两个数组在某个维度上的形状相等,或其中一个数组在该维度上的形状为1,则认为它们在该维度上是兼容的。 如果两个数组在所有维度上都是兼容的,它们可以一起进行广播。...因此,在使用广播时,建议仔细理解广播规则,并确保操作的正确性。...b = np.sort(a) print(b) # 输出: [1 2 3 4 5] 2. np.argsort() 函数 该函数返回数组排序后的索引。...() 方法 该方法返回数组排序后的索引,类似于 np.argsort() 函数。

    8710

    NumPy学习笔记—(33)

    本节来介绍另外一种数组索引的方式,被称为高级索引。高级索引语法上和前面我们学习到的简单索引很像,区别只是它不是传递标量参数作为索引值,而是传递数组参数作为索引值。...x[ind] array([71, 86, 60]) 当使用高级索引时,结果数组的形状取决于索引数组的形状而不是被索引数组的形状: ind = np.array([[3, 7],...1.4.使用高级索引修改数据 前面我们看到高级索引能够被用来获取一个数组的部分数据,实际上它还能用来修改选中部分的数据。...2.2.部分排序:分区 有时候我们并不是需要对整个数组排序,而仅仅需要找到数组中的K个最小值。...2.3.例子:k 近邻 下面我们使用argsort沿着多个维度来寻找每个点的最近邻。首先在一个二维平面上创建 10 个随机点数据。

    2.3K20

    【科学计算包NumPy】NumPy数组的基本操作

    对一个数组进行重复运算时,使用 ufunc 函数比使用 math 库中的函数效率要高很多,方便程序书写(替代了循环)。...(2)如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度为 1 的维度进行扩展,以匹配另一个数组的形状。 (3)输出数组的 shape 是输入数组 shape 的各个轴上的最大值。...indexing),允许用一个索引数组作为另一个数组的索引以获取后者的子集。...np.argsort 函数和 np.lexsort 函数根据一个或多个键值对数据集进行排序。...使用 argsort 和 lexsort 函数,可以在给定一个或多个键时,得到一个由整数构成的索引数组,索引值表示数据在新的序列中的位置。

    12210

    NumPy 1.26 中文文档(五)

    ndarray.sort([axis, kind, order]) 对数组进行原地排序。 ndarray.argsort([axis, kind, order]) 返回对该数组进行排序的索引。...索引范围由数组的 shape 指定。每个条目占用多少字节以及这些字节如何解释由与数组关联的 数据类型对象 定义。 内存段本质上是一维的,有许多不同的方案可以将 N 维数组的条目排列在一维块中。...ndarray.sort([axis, kind, order]) 对数组进行原地排序。 ndarray.argsort([axis, kind, order]) 返回用于对数组进行排序的索引。...ndarray.sort([axis, kind, order]) 就地对数组进行排序。 ndarray.argsort([axis, kind, order]) 返回按排序数组的索引。...argpartition(kth[, axis, kind, order]) 返回对数组进行分区的索引。 argsort([axis, kind, order]) 返回对数组进行排序的索引。

    15510

    一句Python,一句R︱数据的合并、分组、排序、翻转、集合

    如果数据格式是array的话,如何对array进行合并? 这边笔者又要吐槽自己了...以为又在使用R,如果a是array格式的,append是不可以使用的。...2、数组array/numpy 笔者目前见到的排序有以下几类:sort、sorted;argsort返回的是数列排序的秩 sort+sorted跟之前的元组、list一样,但是argsort不太一样...两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。...一个 set 比另一个 set 小,只有在第一个 set 是第二个 set 的 subset 时(是一个 subset,但是并不相等)。...一个 set 比另一个 set 打,只有在第一个 set 是第二个 set 的 superset 时(是一个 superset,但是并不相等)。 子 set 和相等比较并不产生完整的排序功能。

    1.2K20

    NumPy 笔记(超级全!收藏√)

    ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。...numpy.char.center()  numpy.char.center() 函数用于将字符串居中,并使用指定字符在左侧和右侧进行填充。 ...此外,一个数组的任何变化都反映在另一个数组上。 例如,一个数组的形状改变也会改变另一个数组的形状。 ...当创建一个对象,然后把它赋给另一个变量的时候,Python 并没有拷贝这个对象,而只是拷贝了这个对象的引用,我们称之为浅拷贝。 ...逆矩阵(inverse matrix):设A是数域上的一个n阶矩阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。

    4.6K30

    Python NumPy自定义排序算法实现

    虽然 NumPy 提供了高效的内置排序函数(如 numpy.sort 和 numpy.argsort),但有时需要实现自定义的排序逻辑,以满足特定需求,例如对数组中的特定列、组合条件或自定义顺序进行排序...NumPy 内置排序方法 在开始自定义排序算法之前,先了解 NumPy 提供的内置排序功能: numpy.sort:对数组进行排序,默认沿最后一个轴进行排序。...numpy.argsort:返回排序后的索引。 numpy.lexsort:用于基于多个键的排序。...自定义排序算法实现 自定义排序算法可以通过以下几种方式实现: 方法一:基于索引的排序 可以通过 numpy.argsort 获取排序后的索引,然后根据这些索引重新排列数组。...= np.argsort(weights) # 根据索引重排数组 sorted_arr = arr[sorted_indices] print("按权重排序后的数组:", sorted_arr)

    7910

    numPy的一些知识点

    np 的高级索引,不像 python 只能用字符和数字做索引,np 还可以用整形矩阵和布尔型矩阵来进行索引,虽然平时可能用的并不多。...是在原来的 array 上就地修改,并且,为了方便,reshape 可以在确定了其中一个维度的大小后将另一个维度用 -1 表示,让计算机自己去计算,但是用 resize 的话一定要将所有的维度都正确填写...,底层来说的话,浅拷贝相当于拷贝前后的两个变量公用一块内存,改变了其中一个的话,另一个也会跟着改变,深拷贝则是开辟了另一块内存进行拷贝,使拷贝前后二者没有任何关联,仅仅是值相等,改变其中一个的值另一个并不会跟着改变...argsort 函数返回的是数组值从小到大的索引值,也就是 index 一维数组 >>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2,...) #按列排序 array([[0, 1], [1, 0]]) >>> np.argsort(x, axis=1) #按行排序 array([[0, 1], [0, 1]]

    95130
    领券