Python numpy数组的奇怪行为

Python numpy数组的奇怪行为,python,numpy,Python,Numpy,我不理解带有子索引的numpy.array\u split的行为。事实上,当我考虑给定长度的数组时,我确定一个子索引,并且尝试使用ARARYAYSPLY。如果子指数的数量是奇数或偶数,我会得到不同的行为。让我们举个例子 import numpy as np a = np.ones(2750001) # fake array t = np.arange(a.size) # fake time basis indA = ((t>= 5e5) & (t<= 1e6)) # Firs

我不理解带有子索引的
numpy.array\u split
的行为。事实上,当我考虑给定长度的数组时,我确定一个子索引,并且尝试使用ARARYAYSPLY。如果子指数的数量是奇数或偶数,我会得到不同的行为。让我们举个例子

import numpy as np
a = np.ones(2750001) # fake array
t = np.arange(a.size) # fake time basis
indA = ((t>= 5e5) & (t<= 1e6)) # First subindices odd number
indB = ((t>=5e5+1) & (t<= 1e6)) # Second indices even number
# now perform array_split
print(np.shape(np.array_split(a[indA],10)))
# (10,)
print(np.shape(np.array_split(a[indB],10)))
# (10, 50000)
将numpy导入为np
a=np.ones(2750001)#假数组
t=np.arange(a.size)#假时间基准

indA=((t>=5e5)和(t=5e5+1)和(t我认为这种令人惊讶的行为更多地与
np.shape
有关,而不是
np.array\u split

In [58]: np.shape([(1,2),(3,4)])
Out[58]: (2, 2)

In [59]: np.shape([(1,2),(3,4,5)])
Out[59]: (2,)
正在显示数组的形状。a数组(a)

因此,当
np.array\u split
返回长度不等的数组列表时,
np.asarray(a)
是对象数据类型的一维数组:

In [61]: np.asarray([(1,2),(3,4,5)])
Out[61]: array([(1, 2), (3, 4, 5)], dtype=object)
array\u split
返回长度相等的数组列表时,则
np.asarray(a)
返回二维数组:

In [62]: np.asarray([(1,2),(3,4)])
Out[62]: 
array([[1, 2],
       [3, 4]])

对不起,我写了b而不是t。现在我已经修改了文本
In [62]: np.asarray([(1,2),(3,4)])
Out[62]: 
array([[1, 2],
       [3, 4]])