【发布时间】:2014-03-27 02:23:21
【问题描述】:
如何使用 python numpy 数组通过 shift 完成列添加?
我有一个二维数组,需要它的扩展副本。
a = array([[0, 2, 4, 6, 8],
[1, 3, 5, 7, 9]])
我想要类似的东西(以下是伪代码,它不起作用;据我所知,numpy 中没有a.columns):
shift = 3
mult_factor = 0.7
for column in a.columns - shift :
out[column] = a[column] + 0.7 * a[column + shift]
我也知道,我可以使用索引来做类似于我需要的事情。但我似乎真的过分枚举三个值并只使用一个(j):
for (i,j),value in np.ndenumerate(a):
print i,j
我创立了,我可以遍历列,但不能遍历它们的索引:
for column in a.T:
print column
虽然我可以简单地使用类似于 xrange 的东西来做到这一点,但适用于多维数组:
In [225]: for column in np.ndindex(a.shape[1]):
print column
.....:
(0,)
(1,)
(2,)
(3,)
(4,)
所以现在我只知道如何使用简单的 xrange 来做到这一点,我不确定这是最好的解决方案。
out = np.zeros(a.shape)
shift = 2
mult_factor = 0.7
for i in xrange(a.shape[1]-shift):
print a[:, i]
out[:, i] = a[:, i] + mult_factor * a[:, i+shift]
然而,在 Python 中它可能不会那么快。 你能给我一个建议吗?它的性能如何?也许有更快的方法来完成 numpy 数组的列添加与 shift ?
【问题讨论】:
-
这是什么版本的numpy? (
a.columns对我不起作用)。另外,你能解释一下班次的输出应该是什么吗? -
a.columns将不起作用它是伪代码,代表我真正需要的。 shift 是用于添加列的偏移量,仅此而已,第一个输出列应该是第一个输入列plusfirst+shift 列
标签: python arrays numpy iteration