0

我刚刚发现将一个空数组与一个非空数组连接会在一个包含非空数组但更改为浮点数的单值数组中产生。例如:

import numpy as np
np.concatenate([1], [1])
array([1, 1])

np.concatenate([], [1])
array([1.])

这与 np.hstack 相同

4

1 回答 1

0

默认情况下,代码中的空数组

np.concatenate([], [1])

用 初始化dtype=float,并且 concatenate 将第二个int数组转换为float.

现在,值得一问的是,您是否曾经在空数组上使用连接。显然,您永远不会编写像

a=array([1,2,3])#int array
b=np.concatenate([], a)

可能发生的一种情况如下:

a=array([1,2,3])#int array
b=concatenate((a[:j],a)) #usually j!=0 here

然后由于某些原因,代码使用j=0. 确实a[:0]是空的,但它仍然保留dtype=int并且 concatenate 的结果无论如何都是一个整数数组,正如您所期望的那样。

所以我会说是的,你的例子乍一看显示出一种意想不到的行为,但它是无害的。

于 2013-10-20T20:22:23.443 回答