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

numpy中的“标量”是什么?

周飞
2023-03-14
问题内容

该文档说明了标量的用途,例如,传统的Python数字(例如float和integer)太原始了,因此需要更复杂的数据类型。

它还说明某些标量(数据类型层次结构);以及标量的几个属性。
但是它从来没有给出确切的定义,确切说明了在Python上下文中标量是什么。

我想对此深究。所以我的问题是,以最简单的方式向我解释什么是pythonic标量。


问题答案:

甲NumPy的标量是任何html" target="_blank">对象,它是一个实例np.generic或其typenp.ScalarType

In [12]: np.ScalarType
Out[13]: 
(int,
 float,
 complex,
 long,
 bool,
 str,
 unicode,
 buffer,
 numpy.int16,
 numpy.float16,
 numpy.int8,
 numpy.uint64,
 numpy.complex192,
 numpy.void,
 numpy.uint32,
 numpy.complex128,
 numpy.unicode_,
 numpy.uint32,
 numpy.complex64,
 numpy.string_,
 numpy.uint16,
 numpy.timedelta64,
 numpy.bool_,
 numpy.uint8,
 numpy.datetime64,
 numpy.object_,
 numpy.int64,
 numpy.float96,
 numpy.int32,
 numpy.float64,
 numpy.int32,
 numpy.float32)

这个定义来自看源代码的np.isscalar:

def isscalar(num):
    if isinstance(num, generic):
        return True
    else:
        return type(num) in ScalarType

请注意,您可以使用来测试某物是否为标量np.isscalar

>>> np.isscalar(3.1)
True
>>> np.isscalar([3.1])
False
>>> np.isscalar(False)
True

我们怎么知道我们知道什么? 我喜欢学习人们如何知道他们所知道的知识,而不是回答自己。因此,让我尝试解释以上答案的来源。

拥有合适的工具可以帮助您自己解决诸如此类的问题。

我通过使用IPython发现了这一点。使用其TAB补全功能,键入

In [19]: import numpy as np
In [20]: np.[TAB]

使IPython在np模块名称空间中显示所有变量。搜索字符串"scalar"将使您进入np.ScalarTypenp.isscalar。打字

In [20]: np.isscalar?

(注意最后的问号)提示IPython向您显示np.isscalar定义的位置:

File:       /data1/unutbu/.virtualenvs/dev/lib/python2.7/site-packages/numpy/core/numeric.py

这就是我对的定义的方式isscalar。另外,numpy文档isscalar也有指向源代码的链接。



 类似资料:
  • 据我所知,基本类型是Scalar,数组是聚合的,但用户定义的类型呢?根据什么标准,我可以将它们分为两类?

  • 主要内容:NumPy使用需求,NumPy应用场景NumPy 的全称是“ Numeric Python”,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。 在数组算术计算方面, NumPy 提供了大量的数学函数。NumPy 的底层主要用 C语言编写,因此它能够高速地执行数值计算。NumPy 还提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上。 NumPy 的前身是 Numeric 程序包,该包由 Jim

  • 原文:What is NumPy? NumPy是Python中用于科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生的对象(如掩码数组和矩阵),以及数组快速操作的各种各样的例程,包括数学、逻辑、图形操作,排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计操作,随机模拟以及其他。 NumPy包的核心是ndarray对象。它封装了均匀数据类型的n维数组,带有一些在编译过的代码

  • 问题内容: 我正在使用LLBLGEN,这里有一种方法可以将查询执行为。谷歌搜索给我一个定义,它们是一样的吗? 问题答案: 标量查询是一种返回由一列组成的一行的查询。

  • 我尝试使用numpy阵列执行以下操作: 这应该给出一个结果: 但如果输入向量是numpy数组: 它(预期)返回一个: 问题是,在此之后,我需要将结果转换回numpy数组。 我想知道的是,如果有一个有效的numpy函数可以避免这些来回的转换,那该怎么办?

  • 问题内容: 如果我有,这给了我,我怎么能回到原来的阵列? 问题答案: 简短而甜美,没有缓慢的Python循环。我们对除第一个元素()和除最后一个()以外的所有元素进行查看,并逐元素相减。该副本可确保我们减去原始元素值,而不是我们正在计算的值。(在NumPy 1.13及更高版本上 ,您可以跳过通话。)