我刚刚发现将空数组与非空数组连接起来会产生包含非空数组的单值数组,但更改为浮点数。例如:
import numpy as np
np.concatenate([1], [1])
array([1, 1])
但
np.concatenate([], [1])
array([1.])
这与 NP.hstack 的工作方式相同。
默认情况下,代码中的空数组
np.concatenate([], [1])
用 dtype=float
初始化,并连接第二个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 的结果无论如何都是一个整数数组,正如您所期望的那样。
所以我想说的是,是的,你的例子乍一看在某种程度上显示出一种意想不到的行为,但它是相当无害的。