空的numpy concatenate和非空数组在float中产生

时间:2013-10-20 19:44:28

标签: numpy

我刚刚发现将一个空数组与一个非空数组连接在一个包含非空数组的数值数组中,但更改为float。 例如:

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

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

这与np.hstack

的工作原理相同

1 个答案:

答案 0 :(得分:0)

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

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,并且连接的结果无论如何都是一个整数数组,如你所料。

所以我会说是的,你的例子在某种程度上显示出一见钟情的意外行为,但它是无害的。