【发布时间】:2016-05-03 07:33:14
【问题描述】:
我有以下 numpy 数组
import numpy as np
X = np.array([[5.], [4.], [3.], [2.], [1.]])
我想在开头插入[6.]。
我试过了:
X = X.insert(X, 0)
如何插入到 X 中?
【问题讨论】:
我有以下 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 notebook 中使用 %%timeit 魔术函数来解决一些问题。
我的发现:
np.concatenate(([number],array))
需要最少的时间。我们称之为 1x 时间。
np.asarray([number] + list(array))
大约 2 倍。
np.r_[number,array]
约为 4 倍。
np.insert(array,0,number)
8x 似乎是这里最糟糕的选择。
我不知道这如何随着array 的大小而变化(我使用了形状 (15,) 数组),并且我建议的大多数选项只有在您想将数字放在开头时才有效。但是,由于这就是问题所要问的,我认为这是进行这些比较的好地方。
【讨论】:
aa =np.concatenate(([0]*99, aa)) ... 因为我在平滑之前操纵信号,然后找到峰值。
你可以试试下面的
X = np.append(arr = np.array([[6]]), values = X, axis= 0)
不是将 6 插入现有的 X,而是将 6 附加到 X。
所以,第一个参数arr是标量6的numpy数组,第二个参数是你要添加的数组,第三个是我们要添加的地方
【讨论】:
我知道这是一个相当古老的方法,但一个简短的解决方案是使用 numpy 切片技巧:
np.r_[[[6.]], X]
如果您需要在第二维中执行此操作,可以使用 np.c_。
我认为这是我能想到的最简洁的版本
【讨论】: