当前位置: 首页 > 面试题库 >

如何展平第二轴上具有不同长度的2d numpy数组?

国俊艾
2023-03-14
问题内容

我有一个numpy的数组,看起来像:

myArray = np.array([[1,2],[3]])

但是我不能弄平

In: myArray.flatten()
Out: array([[1, 2], [3]], dtype=object)

如果将数组在第二个轴上更改为相同的长度,则可以将其展平。

In: myArray2 = np.array([[1,2],[3,4]])
In: myArray2.flatten()
Out: array([1, 2, 3, 4])

我的问题是:

我可以使用诸如myArray.flatten()数组的大小及其元素的长度之类的东西来获取输出array([1,2,3])吗?


问题答案:

myArray是一维 对象
数组。您的列表对象将仅使用flatten()或保持相同顺序ravel()。您可以用来hstack按水平顺序堆叠数组:

>>> np.hstack(myArray)
array([1, 2, 3])

请注意,这基本上等效于使用concatenate1的轴(
这在直觉上应该有意义 ):

>>> np.concatenate(myArray, axis=1)
array([1, 2, 3])

但是,如果您 没有 这个问题并且 可以 合并项目,则始终最好使用flatten()ravel()提高性能:

In [1]: u = timeit.Timer('np.hstack(np.array([[1,2],[3,4]]))'\
   ....: , setup = 'import numpy as np')
In [2]: print u.timeit()
11.0124390125

In [3]: u = timeit.Timer('np.array([[1,2],[3,4]]).flatten()'\
   ....: , setup = 'import numpy as np')
In [4]: print u.timeit()
3.05757689476

Iluengo的答案还为您提供了有关为何无法使用flatten()ravel()指定数组类型的更多信息。



 类似资料:
  • 我有这个问题: 您将获得一个整数 A 和一个整数 k 的数组。您可以将 A 的元素递减到 k 次,目标是生成一个元素都相等的连续子数组。返回可以用这种方式生成的最长的连续子数组的长度。 例如,如果 A 是 [1,7,3,4,6,5] 并且 k 是 6,那么您可以生成 [1,7,3,4-1,6-1-1-1,5-1-1] = [1,7,3,3,3,3],因此您将返回 4。 最佳解决方案是什么?

  • 问题内容: 我有一个清单清单。每个子列表的长度在1到100之间。每个子列表在一组数据中的不同时间包含一个粒子ID。我想在给定的时间形成所有粒子ID的列表。为此,我可以使用以下方法: list2将包含list中每个子列表的首个元素。我不仅要对第一个元素执行此操作,还要对1到100之间的每个元素执行此操作。我的问题是,每个子列表都不存在元素号100(或66或77或其他)。 有什么方法可以创建列表列表,

  • 问题内容: 我有不同长度的清单清单(例如),并想将其转换成整数数组。我了解多维数组中的“子”数组必须具有相同的长度。那么将上述示例中的列表转换成这样的数组(即用零完成)的最有效方法是什么? 问题答案: 您可以使用np.zeros创建一个numpy数组,并用列表元素填充它们,如下所示。 结果是

  • 我有一个需要分解的spark数据帧,格式如下。我检查其他解决方案,比如这个。但是,在我的例子中,之前的之后的 或“after”。 我可以在两个单独的爆炸中执行此操作,其中我在每个爆炸中创建列,然后创建。 但是,我想知道是否有更优雅的方式来做到这一点。谢谢

  • 如何设置textview中的所有行具有相同的字符长度? 这是sqlite数据库中的文本 这是Android的文本视图 我在main.class中的查询代码 db.open();光标c=db.getdescIntro(系,学位); 我的数据库.class 公共游标获取简介(字符串dep,字符串度){ 返回db.query("学术", new String[]{"desc","部门","acapdf"

  • 我使用的是,我需要展平包含同名字段的文档。 我创建的文档如下所示: 在那之后,我试图像下面这样压平文档: 我的主要方法是: 展平后,我得到的文档包含一个展平字段,但我必须得到两个展平字段。 如何解决此问题?