以下代码:
class1 = genfromtxt('example.csv',, delimiter=',')
#rest of the classes are loaded in the same way
timejoin = []
classlist = []
class_list=[class1,class2,class3,class4,class5,class6,class7]
print class1.shape
print len(timejoin)
classcounter = 0
for class_i in class_list:
classcounter = classcounter + 1
odd = class_i[1::2]
even = class_i[1::2]
oddandeven = np.concatenate((odd, even), axis=1)
print oddandeven.shape
timejoin.append(oddandeven)
countervector = np.full((oddandeven.shape[0],1), classcounter)
print countervector.shape
classlist.append(countervector)
break
print len(timejoin)
timejoin1 = np.array(timejoin)
classlist1 = np.array(classlist)
print timejoin1.shape
print classlist1.shape
具有以下打印输出:
(52L, 350L)
0
(26L, 700L)
(26L, 1L)
1
(1L, 26L, 700L)
(1L, 26L, 1L)
当删除中断时,打印产生:
(52L, 350L)
0
(26L, 700L)
(26L, 1L)
(22L, 700L)
(22L, 1L)
(15L, 700L)
(15L, 1L)
(25L, 700L)
(25L, 1L)
(21L, 700L)
(21L, 1L)
(27L, 700L)
(27L, 1L)
(26L, 700L)
(26L, 1L)
7
(7L,)
(7L,)
最后两个元素是numpy转换的列表。 有人知道发生了什么吗?我没有在每个列表中获得正确的元素来进行numpy转换。该列表假设包含所有类元素。
答案 0 :(得分:1)
对于您构建的每个class_i
:
print oddandeven.shape
timejoin.append(oddandeven)
和相应的印刷品(如果我已正确推断出事物)
(26L, 700L)
(22L, 700L)
...
换句话说,timejoin
是7个数组的列表,每个数组都有不同的维度。 np.array(timejoin)
将是一个dtype=object
的数组,其中每个元素都是其中一个数组。
如果数组具有匹配的维度,则它将构造为类似(7,22,700)
的形状。但在这种情况下,这是不可能的。
您是否看过timejoin1
本身,而不仅仅是它的形状?这应该给你一个线索。
您还需要清理打印件。在线上放一些标签。我们应该能够阅读您的代码和输出,并轻松查看正在发生的事情。
如果列表中的所有数组具有相同的列数,则np.vstack
将连接行。
In [156]: class1=np.empty((26,700))
In [157]: class2=np.empty((22,700))
In [158]: class3=np.empty((10,700))
In [159]: np.vstack([class1,class2,class3]).shape
Out[159]: (58, 700)
# or np.concatenate([class1,class2,class3],axis=0)