将元素前置为numpy数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将元素前置为numpy数组相关的知识,希望对你有一定的参考价值。
我有以下numpy数组
import numpy as np
X = np.array([[5.], [4.], [3.], [2.], [1.]])
我想在开头插入[6.]
。我试过了:
X = X.insert(X, 0)
我如何插入X?
numpy有一个insert
功能,可通过np.insert
与documentation访问。
在这种情况下你会想要使用它:
X = np.insert(X, 0, 6., axis=0)
第一个参数X
指定要插入的对象。
第二个参数0
指定了哪里。
第三个参数6.
指定要插入的内容。
第四个参数axis=0
指定插入应发生在每列的位置0
。我们可以选择行但你的X是列向量,所以我认为我们会保持一致。
我刚刚编写了一些执行此操作的代码〜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,)数组)的大小而变化的,我建议的大多数选项只有在你想要将数字放在开头时才有效。但是,由于这就是问题所在,我认为这是进行这些比较的好地方。
您可以尝试以下方法
X = np.append(arr = np.array([[6]]), values = X, axis= 0)
不要将6插入现有的X,而是通过X追加6。
所以,第一个参数arr
是标量6的numpy数组,第二个参数是要添加的数组,第三个是我们要添加的地方
我知道这是一个相当古老的,但一个简短的解决方案是使用numpy切片技巧:
np.r_[[[6.]], X]
如果您需要在第二维中执行此操作,则可以使用np.c_。
我认为这是我能想到的最简洁的版本
以上是关于将元素前置为numpy数组的主要内容,如果未能解决你的问题,请参考以下文章