如何在python中的numpy ndarray中操作数组?
例如,如果我有这样的数组
a1 = np.array([1,1,1,1],[2,2,2,2],[3,3,3,3])
>>
[[1 1 1 1]
[2 2 2 2]
[3 3 3 3]]
我希望在数组中交换一行或多行。
例如,我想在第一个索引处插入数组[0,0,0,0]
,所以它看起来像这样:
[[0 0 0 0]
[2 2 2 2]
[3 3 3 3]]
或者如果我有这样的第二个数组
a2 = np.array([1,2,3,4],[5,6,7,8])
>>
[[1 2 3 4]
[5 6 7 8]]
我想让它替换我的第一个数组的前两行:
[[1 2 3 4]
[5 6 7 8]
[3 3 3 3]]
如果速度是一个重要因素,我该如何进行这些操作?
答案 0 :(得分:1)
它非常谨慎:
t = np.array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
t[0, :] = np.zeros(t.shape[1])
只需使用t[0, :]
访问第一行即可。我在这里np.zeros
使用,因为我非常确定这是初始化零向量的最快方法。
第二种情况基于相同的逻辑。
t = np.array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
t2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
t[0:2, :] = t2
实际上,t[0, :]
表示第一行,列中的所有元素,可以缩短为t[0]
。 t[0:2]
表示从索引0到索引2的所有行(不包括在内)。
关于速度......
$ timeit t[0:2] = t2
805 ns ± 2.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
无需过度复杂化这件事;)