我不理解numpy.array_split
的行为。实际上,当我考虑一个给定长度的数组时,我确定了一个子索引,并尝试使用array_split。如果子指数的数目是奇数或偶数,我会得到不同的行为。让我们举个例子
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)
现在我们得到了不同的结果,基本上对于偶数,shape命令实际给出(1050000),而对于奇数索引,shape命令给出(10,)(假设10个列表)。实际上我有点惊讶,我想了解原因。我知道array_split
也可以在拆分数不相等的情况下使用。但我也想要一些线索,因为我需要插入一个循环,在这个循环中我不知道指数是偶数还是奇数。在
我认为令人惊讶的行为与
np.shape
有关,而不是np.array_split
:^{} 显示数组的形状
^{pr2}$np.asarray(a)
:因此,当
np.array_split
返回一个长度不等的数组列表时,np.asarray(a)
是对象数据类型的一维数组:当
array_split
返回一个长度为等长度的数组列表时,np.asarray(a)
返回一个二维数组:相关问题 更多 >
编程相关推荐