亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以使用哪個 numpy 命令多次減去不同維度的向量?

我可以使用哪個 numpy 命令多次減去不同維度的向量?

守候你守候我 2021-08-14 19:34:54
我必須寫這個函數: 其中 x 是一個維度為 [150,2] 的向量,c 是 [N,2](假設 N=20)。從每個分量 xi (i=1,2) 我必須以這種方式減去 c 的分量 ([x11-c11,x12-c12])...([x11-cN1, x12-cN2]) 對于所有的150 個樣品。我以一種具有相同維度的方式對它們進行了轉換,并且可以減去它們,但是函數的結果應該是一個向量。也許我怎么能用 numpy 寫這個?謝謝 好的,讓我們假設 x=(5,2) 和 c=(3,2)這是我獲得的兩個數組的轉換維度。問題是,我必須這樣做,但是使用“for 循環”迭代,因為 exp 函數應該給我一個向量。所以我必須獲得一種分為 N 塊的矩陣。
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

根據我對這個問題的理解,問題似乎在于您計算向量范數的方式,而不是減法。使用您的示例,但計算exp(-||x-c||),請嘗試:


x = np.linspace(8,17,10).reshape((5,2))

c = np.linspace(1,6,6).reshape((3,2))

sub = np.linalg.norm(x[:,None] - c, axis=-1)

np.exp(-sub)


array([[  5.02000299e-05,   8.49325705e-04,   1.43695961e-02],

       [  2.96711024e-06,   5.02000299e-05,   8.49325705e-04],

        [  1.75373266e-07,   2.96711024e-06,   5.02000299e-05],

        [  1.03655678e-08,   1.75373266e-07,   2.96711024e-06],

        [  6.12664624e-10,   1.03655678e-08,   1.75373266e-07]])


np.exp(-sub).shape

(5, 3)

numpy.linalg.norm 將嘗試在其輸入的所有維度上返回某種矩陣范數,除非您明確告訴它哪個軸代表向量分量。


查看完整回答
反對 回復 2021-08-14
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

我明白了,試試這是否給出了預期的結果,但仍然存在結果具有相同形狀的問題x:


import numpy as np


x = np.arange(10).reshape(5,2)

c = np.arange(6).reshape(3,2)


c_col_sum = np.sum(c, axis=0)


for (h,k), value in np.ndenumerate(x):

  x[h,k] = c.shape[0] * x[h,k] - c_col_sum[k]

最初x是:


[[0 1]

 [2 3]

 [4 5]

 [6 7]

 [8 9]]

并且c是:


[[0 1]

 [2 3]

 [4 5]]

之后函數x變成:


[[-6 -6]

 [ 0  0]

 [ 6  6]

 [12 12]

 [18 18]]


查看完整回答
反對 回復 2021-08-14
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號