- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
>> a = None >>> a = np.asarray(a) array(None, dtype=object) >>> t-6ren">
我想知道 numpy.ndarray
的以下功能的基本原理是什么:
>>> a = None
>>> a = np.asarray(a)
array(None, dtype=object)
>>> type(a)
<class 'numpy.ndarray'>
>>> a == None
True
>>> a is None
False
所以在这种情况下,Python 似乎实际上创建了一个 None
数组(不是 Nones 数组),这似乎在变量 a
上强制执行了一个类型。但是文档指出位置参数需要是“array_like”:
a : array_like
Input data, in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays.
那么为什么 None
被接受为“类数组”,因为它不是上面列出的任何一个?
以此类推,list(None)
将返回错误,因为根据文档,None
不是“可迭代的”。
此外,某些函数似乎实际上返回看似不正确的值。例如 np.ndarray.argmax()
或 np.ndarray.argmin()
对于“无数组”实际上返回 0,但对于空数组会导致错误这在直觉上似乎是预期的行为。
>>> a
array(None, dtype=object)
>>> b
array([], dtype=object)
>>> a.argmax()
0
>>> b.argmax()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempt to get argmax of an empty sequence
相对于空数组(array([], dtype=object )
)?
这是预期的功能,还是 Nones
是实际对象的意外结果?有人能解释一下引擎盖下发生了什么以及为什么吗?
非常感谢!
最佳答案
np.asarray(None)
得到的是一个形状为 ()
的数组,它是一个 scalar , 数据类型 object
。如果您执行 np.asarray(2)
或 np.asarray('abc')
,您会得到类似的结果。标量不能迭代,但可以与非 NumPy 值进行比较。同时,您可以使用它们进行 NumPy 操作,因此您可以:
list(np.asarray(None).reshape((1,)))
而且有效。
关于 argmin
或 argmax
等函数。请注意,标量不为空。形状为 ()
的数组只有一个元素,但维度为零,而形状为 (0,)
的数组只有一维,没有元素。这可能是违反直觉的,但它是有道理的,而且也能让事情发挥作用。如文档所述,argmin
和 argmax
,当没有给出 axis
值时,将处理展平数组。标量的扁平数组(例如 np.asarray(None).ravel()
)是一个形状为 (1,)
的数组,并且,由于您要求最小值或最大值的索引并且它只有一个值,在这两种情况下答案都是 0
。有趣的是,如果你尝试 np.argmin(np.asarray([None, None]))
它会失败,因为现在你有两个元素,你需要比较它们才能知道哪个是最小的,但您无法比较 None
值。
关于python - 为什么 numpy.ndarray 允许 "None"数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186190/
这个问题在这里已经有了答案: Why does the print function return None? (1 个回答) 关闭 6 年前。 我正在学习理解。我得到了 print(x) 部分(我
我以为我理解了 Python 中的这两个单例值,直到我看到有人在代码中使用 return l1 or l2,其中 l1 和 l2 都是链表对象,并且(s)他想如果不为 None 则返回 l1,否则返回
我希望在 IPython Notebook 中使用列表理解生成枚举字符串列表。它有效,但给了我一个我不理解的奇怪输出。 cols = [] [cols.append('Value'+str(hour)
这个问题在这里已经有了答案: Why does the expression 0 >> import dis >>> def a(): ... return None is None is N
《Learning Python 5th》第608页有示例代码: >>> list(print(x.upper(), end=' ') for x in 'spam') S P A M [None,
我对此进行了搜索并遇到了列表返回函数,但我仍然不明白。 我试图理解为什么 Print 函数到另一个函数返回以下内容: 生日快乐 生日快乐 无 无 我的代码: def happy(): prin
除非我疯了 if None not in x 和 if not None in x 是等价的。有首选版本吗?我想 None not in 更像英语,因此更像 pythonic,但 not None i
尝试绘制 k-NN 分类器的决策边界但无法这样做得到 TypeError: '(slice(None, None, None), 0)' is an invalid key h = .01 # st
我正在尝试将可变大小的序列输入 LSTM。因此我使用生成器且批量大小为 1。 我有一个嵌入的 (sequence_length,)-input-tensor,并输出 (batch_size,equen
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is there any way to know if the value of an argument i
我正在尝试根据环境变量的返回值进行条件赋值。 self._TBLFilePath = iTBLFilePath or os.environ.get("CDO_TBLPATH") + os.enviro
我正在使用 marshmallow 2.0.0rc2 验证 HTTP 请求的输入数据,并在 HTTP 响应上将 SQLAlchemy 模型加载到 JSON。我偶然发现了两个问题: 首先,在通过 HTT
我想将我设置为 None 的变量与 is 进行比较,但它失败了。 当我使用 == 将此变量与 None 进行比较时,它起作用了。 这就是我所说的变量: print type(xml.a) -> 因为
我最近遇到了这种语法,我不知道有什么区别。 如果有人能告诉我其中的区别,我将不胜感激。 最佳答案 答案解释here . 引用: A class is free to implement compari
尝试使用 BorutaPy 进行特征选择。但出现 TypeError: '(slice(None, None, None), array([0, 1, 2, 3, 4]))' 是无效键。 from s
我见过使用 [] 的代码片段, [None] , None或 ()作为 placeholder 的形状, 那是 x = tf.placeholder(..., shape=[], ...) y = t
是否有逻辑推理可以解释为什么下面的 Ansible playbook 中的两个 debug 任务分别输出 "NONE" 和 "FALSE"并且不是两者都“NONE”? - hosts: 'all'
我有一个函数,它可以返回两个整数的元组或(None, None)的元组: (出于本问题的目的,我们假设此返回格式是执行此操作的唯一方法,并且无法更改) from typing import Tuple
问题: 如何遍历字典并从中删除 None 键或值? 这是我尝试过的: 代码: import copy def _ignore(data): copied_data = copy.deepcop
什么是简洁的 python 表达方式 if : # do a bunch of stuff once 最佳答案 为什么不简单, None not in lst 关于python - 简明地说 "
我是一名优秀的程序员,十分优秀!