【发布时间】:2021-04-30 03:08:33
【问题描述】:
如何在不使用任何循环和 if 语句的情况下通过索引更改 np 数组中的元素。 例如我们有数组[1,2,3,4],每隔一个元素,从0开始,我想改为10。这样得到[10,2,10,4]。
【问题讨论】:
-
arr[::2] = 10
如何在不使用任何循环和 if 语句的情况下通过索引更改 np 数组中的元素。 例如我们有数组[1,2,3,4],每隔一个元素,从0开始,我想改为10。这样得到[10,2,10,4]。
【问题讨论】:
arr[::2] = 10
您可以利用 NumPy 切片:
a = np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[::2] = 10
#array([10, 1, 10, 3, 10, 5, 10, 7, 10, 9])
您可以使用[start:stop:step] 格式对数组进行切片。你可以阅读更多here。
【讨论】:
简单来说,你可以使用:a[::2]=10
【讨论】:
你去吧:
import numpy as np
arr = np.array([1,2,3,4])
for i in range(len(arr)):
if i%2==0:
arr[i]=10
print(arr)
输出:
[10 2 10 4]
import numpy as np
arr = np.array([1,2,3,4])
arr[0::2] = 10
输出:
array([10, 2, 10, 4])
我使用了 Numpy 的切片,它的作用是 [start:stop:step]
【讨论】: