我用Numpy来处理一些非常奇怪的表格数据。数据项总是以每列1200个条目的形式出现。你知道吗
但是,行数总是不同的。有时我导入的表有12行(即numpyndarray.shape = (12, 1200)
,1200乘以12个总条目,即1200*12=14400),有时表有6行(shape=(61200)),以此类推。这里没有模式。你知道吗
列数始终为1200,但行数始终不同。我事先不知道有多少行,所以我不能写一些数学公式。你知道吗
我想用numpy.concatenate
把我得到的每个数组转换成一维数组。(对于我们上面的例子,那就是shape=(114400)。)你知道吗
到目前为止,对于每个单独的数组,我必须将它单独分解为N个数组(N=未知的行数),然后将它们单独连接起来。你知道吗
或者,为了编写for
语句,我必须找到行数,并为每个数组手动设置for语句。你知道吗
有没有更好的方法?这需要很长时间。你知道吗
编辑:对不起,把“行”和“列”混在一起了。为了反映这一点,我重新打印了上面的帖子。是的,数组的形状始终是(n, 1200). So, the format is
(行,列)`并且列的形状始终是1200。你知道吗
进一步的问题:我关于numpy.reshape
的问题是数据的顺序是否改变了。因此,对于具有6行的数组,shape(61200)将numpy.重塑()返回数组形状(172000),以便保留原始顺序?也就是说
newarray = array([row 1, row 2, row 3, row 4, row 5, row 6])
什么?你知道吗
所以有几个数组的形状是
(n,1200)
做一些简单的样品。更容易看出发生了什么。你知道吗
注意数字是如何增加的
生产
因为它只是第一个维度的变化,所以沿着这个维度连接是没有问题的。
np.vstack
做同样的事情。你知道吗展平后加入阵列如何:
用
c.flatten()
你也会得到同样的结果。(flatten
、ravel
、reshape
都做了本质上相同的事情。)concatenate
也可以用来flatten
数组,但这不是通常的方法。实际上,它与按行拆分并连接这些行是相同的。注意np.vstack(c)
不是一回事。你知道吗解决您所问问题的两种方法是:
reshape
的优点是它不会复制数据,因此速度很快,但由于它只是旧数据的新视图,对a
的更改也会更改x
。当然,您也可以复制重塑后的数组以获得单独的数据。你知道吗concatenate
这里将创建一个副本,但是请注意,复制的项目同样只是原始x
上的视图,因此每个元素只有一个副本。使串联数组具有shape(1, 72000)
对我来说似乎有点做作,所以我没有这样做,但如果这是您真正想要的,那么这肯定是可能的。你知道吗下面是一个示例,用于了解在重塑中如何进行排序:
相关问题 更多 >
编程相关推荐