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

numpy与普通python不同的地方是什么?

侯涵煦
2023-03-14
问题内容

民间,

是否有一些Numpy与python不同的陷阱,这些点令人困惑并花费时间?

“那一刻的恐怖,我将永远不会忘记!”
女王说:“不过,如果您不做备忘录,您会的。”

例如,NaN在任何地方都总是麻烦。如果您不做任何解释就可以说明这一点,

from numpy import array, NaN, isnan

pynan = float("nan")
print pynan is pynan, pynan is NaN, NaN is NaN
a = (0, pynan)
print a, a[1] is pynan, any([aa is pynan for aa in a])

a = array(( 0, NaN ))
print a, a[1] is NaN, isnan( a[1] )

(我并没有敲打麻木,那里没有很多好的工作,只是认为常见问题解答或维基百科将很有用。)

编辑:我希望能收集到半个陷阱(人们学习Numpy的惊喜)。
然后,如果有常见的陷阱,或者更好的是常见的解释,我们可以讨论将其添加到社区Wiki(在哪里?),到目前为止我们还不够。


问题答案:

对我而言,最大的难题是几乎每个标准运算符都超载,无法在整个阵列中分布。

定义一个列表和一个数组

>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> import numpy
>>> a = numpy.array(l)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

乘法复制python列表,但分布在numpy数组上

>>> l * 2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a * 2
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

未在python列表上定义加法和除法

>>> l + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
>>> a + 2
array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> l / 2.0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'list' and 'float'
>>> a / 2.0
array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5])

numpy重载有时将列表视为数组

>>> a + a
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
>>> a + l
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])


 类似资料:
  • 使用PEP 557,将数据类引入python标准库。 它们使用了装饰器,它们应该是“带默认值的可变名称耦合”,但我不太清楚这到底意味着什么,以及它们与普通类的区别。 python数据类到底是什么?什么时候最好使用它们?

  • 问题内容: 什么是“非阻塞”并发,它与使用线程的普通并发有何不同?为什么在所有需要并发的场景中不使用非阻塞并发呢?使用非阻塞并发是否有开销? 我听说Java中提供了非阻塞并发。在某些特殊情况下,我们应该使用此功能吗? 在集合中使用这些方法之一有什么区别或优势?权衡是什么? 第三季度示例: 与 这些问题更多是从学习/理解的角度来看的。感谢您的关注。 问题答案: 什么是非阻塞并发?它有什么不同。 正式

  • 问题内容: 我了解C 中模板的方面与Java和C#中的泛型不同。C#是一种形式,Java使用类型擦除,C 使用鸭子类型,等等。C 模板可以做很多事情,而Java和C#泛型则做不到(例如,模板专业化)。但是 Java泛型可以做很多事情,而C#和C ++则做不到(例如,使泛型族的有界类型参数成为现实 ),而 C#泛型可以做的很多事情Java和C 不能做(例如运行时通用反射)。 [编辑:显然Java泛型

  • 问题内容: jQuery如何使用普通的JavaScript?例如, 什么是JavaScript的方式来询问是否有? 问题答案: 您可以检查是否匹配。 匹配一个单词中断。 或者,您可以使用jQuery自己的实现: 为了回答您的更一般性的问题,您可以在github上查看jQuery的源代码,或者在此源代码查看器中专门查看源代码。

  • 本文向大家介绍React的事件和普通的HTML事件有什么不同?相关面试题,主要包含被问及React的事件和普通的HTML事件有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 区别: 对于事件名称命名方式,原生事件为全小写,react 事件采用小驼峰 对于事件函数处理语法,原生事件为字符串,react 事件为函数 react 事件不能采用 return false 的方式来阻止浏览器的默认行为

  • 问题内容: 我尝试将matlab代码转换为numpy,并发现numpy与std函数的结果不同。 在matlab中 在numpy中 这正常吗?我应该如何处理呢? 问题答案: NumPy函数采用一个可选参数:“自由度增量”。默认情况下是。对其进行设置以获取MATLAB结果: 要添加更多上下文,在计算方差(标准偏差为平方根)时,通常将其除以我们拥有的值的数量。 但是,如果我们从较大的分布中选择元素的随机