【发布时间】:2017-07-31 23:07:28
【问题描述】:
回答这个question,我和其他一些人实际上是错误的,因为考虑到以下内容会起作用:
说有
test = [ [ [0], 1 ],
[ [1], 1 ]
]
import numpy as np
nptest = np.array(test)
背后的原因是什么
>>> nptest[:,0]==[1]
array([False, False], dtype=bool)
虽然有
>>> nptest[0,0]==[1],nptest[1,0]==[1]
(False, True)
或者
>>> nptest==[1]
array([[False, True],
[False, True]], dtype=bool)
或
>>> nptest==1
array([[False, True],
[False, True]], dtype=bool)
是不是维度上的退化导致了这种情况。
【问题讨论】:
-
在设计 NumPy 时,任何人都不想让这种交互变得简单。 NumPy 专为刚性多维数字网格而设计。试图获得除了刚性多维网格之外的任何东西都会很痛苦。
-
故事的寓意:不要使用
dtype=object数组。它们是发育不良的 Python 列表,具有更差的性能特征,并且numpy并非旨在处理这些对象数组中类似序列的容器的情况。
标签: python numpy array-broadcasting