Edu*_*eMe 5 python numpy numpy-slicing numpy-ndarray
我有一个 2D NumPy 数组V:
import numpy as np
np.random.seed(10)
V = np.random.randint(-10, 10, size=(6,8))
Run Code Online (Sandbox Code Playgroud)
这给出V:
[[ -1 -6 5 -10 7 6 7 -2]
[ -1 -10 0 -2 -6 9 6 -6]
[ 5 1 1 -9 -2 -6 4 7]
[ 9 3 -5 3 9 3 2 -9]
[ -6 8 3 1 0 -1 5 8]
[ 6 -3 1 7 4 -3 1 -9]]
Run Code Online (Sandbox Code Playgroud)
现在,我有 2 个列表r1和r2,包含列索引,如下所示:
r1 = [1, 2, 5]
r2 = [3, 4, 7]
Run Code Online (Sandbox Code Playgroud)
我想要的是添加V基于索引对的列(r1, r2)并将其存储在列索引中r1。也就是说,对于这种情况,添加 columns(1, 3)和(2, 4),(5, 7)并将它们分别存储在 columns和1of中。25V
可以像这样轻松完成:
V[:, 1] = V[:, [1,3]].sum(axis=1)
V[:, 2] = V[:, [2,4]].sum(axis=1)
V[:, 5] = V[:, [5,7]].sum(axis=1)
Run Code Online (Sandbox Code Playgroud)
给出V:
[[ -1 -16 12 -10 7 4 7 -2]
[ -1 -12 -6 -2 -6 3 6 -6]
[ 5 -8 -1 -9 -2 1 4 7]
[ 9 6 4 3 9 -6 2 -9]
[ -6 9 3 1 0 7 5 8]
[ 6 4 5 7 4 -12 1 -9]]
Run Code Online (Sandbox Code Playgroud)
我担心的是,有没有一种方法可以在没有循环的情况下做到这一点?提前致谢 :)
只需添加V[:, r2]at V[:, r2],如下所示:
V[:, r1] += V[:, r2]
print(V)
Run Code Online (Sandbox Code Playgroud)
输出
[[ -1 -16 12 -10 7 4 7 -2]
[ -1 -12 -6 -2 -6 3 6 -6]
[ 5 -8 -1 -9 -2 1 4 7]
[ 9 6 4 3 9 -6 2 -9]
[ -6 9 3 1 0 7 5 8]
[ 6 4 5 7 4 -12 1 -9]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |