- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 Python 3 上使用 Pandas 0.19.1
。我收到关于这些代码行的警告。我正在尝试获取一个列表,其中包含字符串 Peter
在列 Unnamed: 5
中存在的所有行号。
df = pd.read_excel(xls_path)
myRows = df[df['Unnamed: 5'] == 'Peter'].index.tolist()
它会产生一个警告:
"\Python36\lib\site-packages\pandas\core\ops.py:792: FutureWarning: elementwise
comparison failed; returning scalar, but in the future will perform
elementwise comparison
result = getattr(x, name)(y)"
什么是 FutureWarning,我应该忽略它,因为它似乎有效。
最佳答案
这个 FutureWarning 不是来自 Pandas,它来自 numpy,这里是如何在更接近问题根源的地方重现警告:
import numpy as np
print(np.__version__) # Numpy version '1.12.0'
'x' in np.arange(5) #Future warning thrown here
FutureWarning: elementwise comparison failed; returning scalar instead, but in the
future will perform elementwise comparison
False
使用双等号运算符重现此错误的另一种方法:
import numpy as np
np.arange(5) == np.arange(5).astype(str) #FutureWarning thrown here
在将字符串与 numpy 的数字类型进行比较时,Numpy 和原生 python 之间存在分歧。注意右边的操作数是python的地盘,一个原始字符串,中间的操作是python的地盘,但左边的操作数是numpy的地盘。您应该返回 Python 风格的标量还是 bool 的 Numpy 风格的 ndarray? Numpy 说 ndarray of bool,Pythonic 开发人员不同意。经典对峙。
如果元素存在于数组中,应该是元素比较还是标量?
如果您的代码或库使用 in
或 ==
运算符将 python 字符串与 numpy ndarrays 进行比较,它们不兼容,所以当你尝试它时,它返回一个标量,但仅限于现在。警告表明,将来这种行为可能会改变,因此如果 python/numpy 决定采用 Numpy 样式,您的代码就会到处乱扔垃圾。
Numpy 和 Python 处于对峙状态,目前该操作返回一个标量,但 future 可能会改变。
https://github.com/numpy/numpy/issues/6784
https://github.com/pandas-dev/pandas/issues/7830
锁定您的 python 和 numpy 版本,忽略警告并期望行为不会改变,或者将 ==
和 in
的左右操作数转换为来自 numpy 类型或原始 python 数字类型。
全局禁止警告:
import warnings
import numpy as np
warnings.simplefilter(action='ignore', category=FutureWarning)
print('x' in np.arange(5)) #returns False, without Warning
逐行抑制警告。
import warnings
import numpy as np
with warnings.catch_warnings():
warnings.simplefilter(action='ignore', category=FutureWarning)
print('x' in np.arange(2)) #returns False, warning is suppressed
print('x' in np.arange(10)) #returns False, Throws FutureWarning
只需按名称禁止警告,然后在它旁边放一个响亮的评论,提到当前版本的 python 和 numpy,说这段代码很脆弱,需要这些版本,并在这里放一个链接。把 jar 踢下去。
TLDR: pandas
是绝地; numpy
是小屋;而python
就是银河帝国。
关于python - FutureWarning : elementwise comparison failed; returning scalar, 但将来会执行元素比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40659212/
我有一个定义 def myfunc(a, b): if a >>a = np.array([1,5,50,500]) >>>b = 1 >>>print myfunc(a, b) array(
我正在尝试为两个数组构建一个相等性检查器,我可以使用 PyCUDA 在我的 GPU 上运行它。 按照 PyCUDA 上给出的示例 GPU Arrays documentation page ,我试图编
我曾经使用 min([a, b], key=lambda x:abs(x-x0)) 来查找 a 和 中的哪一个b 最接近 x0。 a = 1 b = 2 x0 = 1.49 print(min([a,
我正在尝试执行元素渐变 例如, output-f(x): 5 x 1 向量, 相对于input-X: 5 x 1 向量 我可以这样做, import theano import theano.te
我在将模型的预测与训练集的标签进行比较时遇到了问题。我使用的数组具有以下形状: Training set (200000, 28, 28) (200000,) Validation set (1000
我有 2 个 2d numpy 数组,A 的形状为 (i,j) ,B 的形状为 (i, k),其中 j >> k。我想定义一个新的 3d 数组 C,使得 C 中的每个元素都是 A 中每一列与整个矩阵
给定数组 A 和 B 的两个数组,我需要测试 A (ai) 中的每个子数组与其 B (bi) 中相应子数组的相等性: import numpy as np a1 = np.array([1, 2, 3
我有两个具有相同形状、索引和列的 Pandas 数据框 A,B。 A 的每个元素都是一个 np.ndarray,形状为 (n,1),B 的每个元素是一个浮点值。现在我想高效将 B 逐元素附加到 A。一
假设我有以下基本的 if 语句: if (A ~= 0) % do something like divide your favorite number by A else % do so
我正在使用 pandas 和 matplotlib 构建条形图。我需要错误栏,但我的函数没有创建它们,我收到以下消息: C:\Python27\lib\site-packages\matplotlib
我有这两个数据结构: a = np.array([1,2,3]) ts = pd.TimeSeries([1,2,3]) 最后我想得到的是: 1 2 3 2 4 6 3 6 9 最佳答案
我正在寻找一种有效获取 boolean 值数组的方法,其中给定两个大小相等的数组 a 和 b,如果对应的每个元素都为真a 的元素出现在 in b 的相应元素中。 例如下面的程序: a = numpy.
我在 Python 3 上使用 Pandas 0.19.1。我收到关于这些代码行的警告。我正在尝试获取一个列表,其中包含字符串 Peter 在列 Unnamed: 5 中存在的所有行号。 df = p
我收到警告,我想检查这是否会中断。我在很多情况下都像这样使用 np.where(对我来说,它类似于 excel 中的 if 语句)。有没有更好或更多的pythonic或pandas方法来做到这一点?我
我将从问题的陈述开始。之后,我将演示一个简短的编码序列,逐步构建解决方案,直到出现问题。显然,这里的目标是计算 b。我在问如何最有效地做到这一点,理想情况下使用元素级 numpy 向量表达式,完全没有
1.我想检查我刚刚使用的分类器的准确性,代码如下: print((np.array(result)==label_test[:2000]).mean()) 2.result 是一个列表,所以我只是将其
我是一名优秀的程序员,十分优秀!