我有一个二维数组A:
28 39 52
77 80 66
7 18 24
9 97 68
还有列索引B的向量数组:
1
0
2
0
我如何以Python方式使用基本的python或numpy,用零替换A的每一行中与B中的列索引相对应的元素?
我应该获得以下新数组A,每行上有一个元素(存储在B中的列索引中的一个),并替换为零:
28 0 52
0 80 66
7 18 0
0 97 68
感谢您的帮助!
答案 0 :(得分:3)
这是使用git init /temp/tmp/dir
# create tmpfile.txt in /temp/tmp/dir
git --git-dir=/temp/tmp/dir/.git --work-tree=/temp/tmp/dir add tmpfile.txt
git --git-dir=/temp/tmp/dir/.git commit --message "adding tmp file"
# your question says without adding remote, so we skip "git remote add"
git --git-dir=/temp/tmp/dir/.git push https://nickname@bitbucket.org/nickname/repo-name.git HEAD:refs/heads/tmp-branch
的简单python方式:
enumerate
答案 1 :(得分:1)
In [117]: A = np.array([[28,39,52],[77,80,66],[7,18,24],[9,97,68]])
In [118]: B = [1,0,2,0]
要从每一行中选择一个元素,我们需要使用与B
相匹配的数组对行进行索引:
In [120]: A[np.arange(4),B]
Out[120]: array([39, 77, 24, 9])
我们可以使用以下方法设置相同的元素:
In [121]: A[np.arange(4),B] = 0
In [122]: A
Out[122]:
array([[28, 0, 52],
[ 0, 80, 66],
[ 7, 18, 0],
[ 0, 97, 68]])
最后以索引(0,1),(1,0),(2,2),(3,0)索引点。
基于列表的“转置”生成相同的对:
In [123]: list(zip(range(4),B))
Out[123]: [(0, 1), (1, 0), (2, 2), (3, 0)]