将元素前置为numpy数组

问题描述 投票:22回答:4

我有以下numpy数组

import numpy as np

X = np.array([[5.], [4.], [3.], [2.], [1.]])

我想在开头插入[6.]。我试过了:

X = X.insert(X, 0)

我如何插入X?

python numpy insert
4个回答
34
投票

numpy有一个insert功能,可通过np.insertdocumentation访问。

在这种情况下你会想要使用它:

X = np.insert(X, 0, 6., axis=0)

第一个参数X指定要插入的对象。

第二个参数0指定了哪里。

第三个参数6.指定要插入的内容。

第四个参数axis=0指定插入应发生在每列的位置0。我们可以选择行但你的X是列向量,所以我认为我们会保持一致。


4
投票

我刚刚编写了一些执行此操作的代码〜100,000次,因此我需要找出最快的方法来执行此操作。我无论如何都不是代码效率的专家,但我可以通过在jupyter笔记本中使用%%timeit魔术函数来解决一些问题。

我的发现:

np.concatenate(([number],array))需要的时间最少。我们称之为1次。

np.asarray([number] + list(array))排在第2位。

np.r_[number,array]是~4倍。

np.insert(array,0,number)似乎是8x最差的选择。

我不知道这是如何随着array(我使用一个形状(15,)数组)的大小而变化的,我建议的大多数选项只有在你想要将数字放在开头时才有效。但是,由于这就是问题所在,我认为这是进行这些比较的好地方。


2
投票

您可以尝试以下方法

X = np.append(arr = np.array([[6]]), values = X, axis= 0)

不要将6插入现有的X,而是通过X追加6。

所以,第一个参数arr是标量6的numpy数组,第二个参数是要添加的数组,第三个是我们要添加的地方


1
投票

我知道这是一个相当古老的,但一个简短的解决方案是使用numpy切片技巧:

np.r_[[[6.]], X]

如果您需要在第二维中执行此操作,则可以使用np.c_。

我认为这是我能想到的最简洁的版本

© www.soinside.com 2019 - 2024. All rights reserved.