当前位置: 首页 > 面试题库 >

为什么numpy对许多ndarray方法都有相应的功能?

於宏大
2023-03-14
问题内容

一些例子:

numpy.sum()
ndarray.sum()
numpy.amax()
ndarray.max()
numpy.dot()
ndarray.dot()

…还有更多。它是否支持某些旧代码,还是有更好的理由?而且,我是仅根据代码的“外观”进行选择,还是两种方法中的一种优于另一种?

我可以想象有人可能想要numpy.dot()使用reduce(例如reduce(numpy.dot, A, B, C, D)),但是我认为这对于像那样有用numpy.sum()


问题答案:

正如其他人所指出的,同名的NumPy函数和数组方法通常是等效的(它们最终会调用相同的基础代码)。如果这样可以使阅读更容易,则它可能比另一个更可取。

但是,在某些情况下,两者的行为略有不同。特别地,使用该ndarray方法有时会强调该方法正在就地修改数组的事实。

例如,np.resize返回具有指定形状的

数组。另一方面,ndarray.resize就地更改数组的形状。每种情况下使用的填充值也不同。

同样,a.sort()对数组a进行原位np.sort(a)排序,同时返回排序后的副本。



 类似资料:
  • 本小节将详述如何创建 ndarray 对象,以及如何创建特殊的 ndarray 对象。 1. ndarray 对象 ndarray,也就是我们常用的 N 维数组对象,是 Numpy 最核心的组成部分。你可以把它视为一个快速而灵活的大数据集容器,利用这种数组你可以便捷地执行一些数学运算。 ndarray 有两个显著特点: ndarray 是一个通用的同构数据多维容器,也就是说,该容器中的每一个元素都

  • 问题内容: 和Numpy有什么区别?我在哪里可以找到numpy源代码中的实现? 问题答案: 只是创建一个便利函数; 它本身不是类。 您也可以使用创建数组,但不建议这样做。来自以下文档的字符串: 阵列应该使用来构造,或…这里给出的参数是指低级方法(用于实例化阵列)。 实现的大部分内容都在C代码中(在multiarray中),但是您可以在这里开始查看ndarray接口: https://github.

  • 主要内容:创建ndarray对象,ndim查看数组维数,reshape数组变维NumPy 定义了一个 n 维数组对象,简称 ndarray 对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块,您可以使用索引或切片的方式获取数组中的每个元素。 ndarray 对象有一个 dtype 属性,该属性用来描述元素的数据类型,相关知识会在《NumPy数据类型》一节做详细介绍 。 ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存

  • 问题内容: 在遍历该 方法时,我看到了方法的多个重载实现: 然后另一个重载方法 当此varargs可以处理其他实现时,为什么以这种方式重载此方法?有什么具体原因吗? 我已经阅读过相同的Javadoc,但是找不到任何令人信服的解释。 问题答案: Varargs方法创建一个数组。 这是有效的,因为创建了隐式数组。是一个设计得非常快的类,因此通过创建所有额外的重载,它们可以在前几种情况下 跳过数组创建步

  • 问题内容: 有没有好的方法来“扩展”一个numpy ndarray?说我有一个ndarray这样的: 我希望每一行通过填充零来包含更多元素: 我知道必须有一些蛮力的方法(比如用零构造一个更大的数组,然后从旧的较小的数组中复制元素),只是想知道是否有Python的方法。尝试过但没用: Numpy抱怨: 问题答案: 有索引技巧和。 如果这是对性能至关重要的代码,则您可能更喜欢使用等效方法而不是索引技巧

  • Numpy中的和之间有什么区别?我在哪里可以找到numpy源代码中的实现?