向每一行添加行相关值
Adding a row-dependent value to each row
我有一个包含以下数字的二维数组:
A = [[1, 5, 9, 42],
[20, 2, 71, 0],
[2, 44, 4, 9]]
我想在不使用循环的情况下向每一行添加不同的常量值。此值为 n*c,其中 n 是当前行,c 是常量。例如,c=100 这样:
B = [[1, 5, 9, 42],
[120, 102, 171, 100],
[202, 244, 204, 209]]
如有任何帮助,我们将不胜感激
您可以按如下方式进行:
>>> A = [[1, 5, 9, 42],
... [20, 2, 71, 0],
... [2, 44, 4, 9]]
...
>>> a = np.array(A)
>>> c = 100
>>> addto = np.arange(len(a))[:, None] * c
>>> a + addto
array([[ 1, 5, 9, 42],
[120, 102, 171, 100],
[202, 244, 204, 209]])
np.arange(len(a))
为您提供索引的一维数组 array([0, 1, 2])
,然后您可以将其乘以 c
.
问题是您需要通过扩展它的维度来使其符合 NumPy 的 broadcasting rules:
>>> np.arange(len(a)).shape
(3,)
>>> np.arange(len(a))[:, None].shape
(3, 1)
你也可以做类似 np.linspace(0, 100*(len(a)-1), num=len(a))[:, None]
的事情,但在这里可能有点矫枉过正。
我有一个包含以下数字的二维数组:
A = [[1, 5, 9, 42],
[20, 2, 71, 0],
[2, 44, 4, 9]]
我想在不使用循环的情况下向每一行添加不同的常量值。此值为 n*c,其中 n 是当前行,c 是常量。例如,c=100 这样:
B = [[1, 5, 9, 42],
[120, 102, 171, 100],
[202, 244, 204, 209]]
如有任何帮助,我们将不胜感激
您可以按如下方式进行:
>>> A = [[1, 5, 9, 42],
... [20, 2, 71, 0],
... [2, 44, 4, 9]]
...
>>> a = np.array(A)
>>> c = 100
>>> addto = np.arange(len(a))[:, None] * c
>>> a + addto
array([[ 1, 5, 9, 42],
[120, 102, 171, 100],
[202, 244, 204, 209]])
np.arange(len(a))
为您提供索引的一维数组 array([0, 1, 2])
,然后您可以将其乘以 c
.
问题是您需要通过扩展它的维度来使其符合 NumPy 的 broadcasting rules:
>>> np.arange(len(a)).shape
(3,)
>>> np.arange(len(a))[:, None].shape
(3, 1)
你也可以做类似 np.linspace(0, 100*(len(a)-1), num=len(a))[:, None]
的事情,但在这里可能有点矫枉过正。