我有3个矩阵(np数组):
A是形状(n,m); B的形状为(m,k); 和C的形状(n,k)
矩阵C只有集合{-1,0,1}中的值,它是某种类型的"指标":如果C [i,j] == 1那么我想将第i行添加到b的第j列; 如果C [i,j] ==( - 1)则减去(0不做任何事).
它可以很容易地用循环来完成,但我想知道是否有一种矢量化的方式可以做得更快?
示例代码:
C = np.array([[-1, 0, 0, 0, 1],
[ 0, 0, 0, 0, -1],
[ 0, 0, 0, 0, -1],
[-1, 0, 0, 1, 1]])
a,b = np.where(C==1)
#here a=[0,3,3] and b=[4,3,4]
A[a,:] = [[0, 1, 2, 3, 4, 5, 6],
[3, 3, 3, 3, 3, 3, 3],
[3, 3, 3, 3, 3, 3, 3]]
B[:,b] += A[a] #B is all 0.0 before
Run Code Online (Sandbox Code Playgroud)
预期结果:
array([[ 0., …
Run Code Online (Sandbox Code Playgroud) 我有一个PANDAS DF对象,其中每个“单元格”都是元组列表:
d = {"seen":[[('A', 4)], [], [('B', 4), ('C',3)], [('A', 1), ('C',4)]],\
'unseen':[[('B', 2), ('C',2)], [('A', 4), ('B', 2), ('C',2)], [('A', 4)],
[('C',1)]]}
df = pd.DataFrame(d)
df
Run Code Online (Sandbox Code Playgroud)
结果是:
seen unseen
0 [(A, 4)] [(B, 2), (C, 2)]
1 [] [(A, 4), (B, 2), (C, 2)]
2 [(B, 4), (C, 3)] [(A, 4)]
3 [(A, 1), (C, 4)] [(B, 1)]
Run Code Online (Sandbox Code Playgroud)
我需要创建一个包含4列的新DF:每个元组列表的长度+每个单元格中所有数字的总和:
seen_count seen_sum unseen_count unseen_sum
0 1 4 2 4
1 0 0 3 8
2 2 7 1 4 …
Run Code Online (Sandbox Code Playgroud) 在控制台中,我可以看到可用的配额(在“ us-east1”区域中)。但是,我位于同一区域的VM找不到此GPU:
tensorflow-1-vm:{“ ResourceType”:“ compute.v1.instance”,“ ResourceErrorCode”:“ 404”,“ ResourceErrorMessage”:{“ code”:404,“ errors”:[{“ domain”:“ global “,”消息“:”找不到资源'projects / dlp-project-212017 / zones / us-east1-b / acceleratorTypes / nvidia-tesla-k80'“,”原因“:” notFound“}],”消息”:“未找到资源'projects / dlp-project-212017 / zones / us-east1-b / acceleratorTypes / nvidia-tesla-k80'”,“ statusMessage”:“未找到”,“ requestPath”:“ https://www.googleapis.com/compute/v1/projects/dlp-project-212017/zones/us-east1-b/instances “,” httpMethod“:” POST“}}
有人知道如何处理这些差异吗?主要是,现在如何使用我的GPU运行VM?