[英]How should I subtract two vectors or matrices from each other without NumPy?
[英]How to assign values from two matrices to each other in sequence?
根據示例,我嘗試將第二個矩陣中的值分配給第一個潤滑器中的值。 首先,我通過矩陣 b 中的最后一行 go 並逐漸將矩陣 d 中的值分配給它。 然后我在矩陣 b 中向上移動一行,在矩陣 d 中移動下一個 position 並且我也依次分配。 所以我繼續到矩陣的末尾
例子
導入 numpy 作為 np
b=np.array([13,14,15,16,17],
[22,23,24,25,26],
[31,32,33,34,35])
d=np.array[100,200,300,400,500,600,700]
需要 output
31 100
32 200
33 300
34 400
35 500
22 200
23 300
24 400
25 500
26 600
13 300
14 400
15 500
16 600
17 700
誰能幫我這個?
**注意:我在語法上做了一些小修正。
-(負)索引將很有用。 您需要在 b 上迭代 -1,-2... 行。 -1 = 最后一行。 並使用行 id 在 d 中獲取偏移量。
import numpy as np
b=np.array([[13,14,15,16,17],
[22,23,24,25,26],
[31,32,33,34,35]])
d=np.array([100,200,300,400,500,600,700])
for i in range(1, 1+len(b)):
for j in range(len(b[-i])):
print(b[-i][j], d[i+j-1])
為此,您可以重新排列b
的行並將它們按順序水平堆疊。
然后通過將元素從 i 到 i + len(row(b)) 從數組d
中創建一個矩陣,其中 i 從 0 開始並在每個 epoch 后移位,然后按順序水平堆疊行。
最后可以zip這兩個arrays得到想要的結果
b=np.array([[13,14,15,16,17],
[22,23,24,25,26],
[31,32,33,34,35]])
d=np.array([100,200,300,400,500,600,700])
val1 = np.hstack(b[::-1])
val2 = np.hstack([d[i:i+b.shape[1]] for i in range(b.shape[0])])
res = zip(val1, val2)
for i, j in res:
print(i, j)
output:
31 100
32 200
33 300
34 400
35 500
22 200
23 300
24 400
25 500
26 600
13 300
14 400
15 500
16 600
17 700
如果您從d
數組中的索引a
數組預測,您可以嘗試以下操作:
>>> order = b[::-1]
>>> idx = (order % 10) - 1
>>> np.stack([order.ravel(), d[idx].ravel()]).T
array([[ 31, 100],
[ 32, 200],
[ 33, 300],
[ 34, 400],
[ 35, 500],
[ 22, 200],
[ 23, 300],
[ 24, 400],
[ 25, 500],
[ 26, 600],
[ 13, 300],
[ 14, 400],
[ 15, 500],
[ 16, 600],
[ 17, 700]])
您可以將d
視為對應於翻轉b
的矩陣:
v = np.lib.stride_tricks.as_strided(d, shape=b.shape, strides=d.strides * 2)
現在您可以將兩者堆疊在一起:
result = np.ravel((b[::-1].ravel(), v.ravel()), axis=-1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.