如何在Python中对数组中的每个元素执行操作并将新值添加到新数组中



我有一个使用Numpy生成的十个随机值的数组。我想对数组中的每个元素执行一个操作,方法是循环遍历所有十个元素,然后将每个元素的结果添加到一个新数组中。在数组上循环的第一部分,但我被困在如何将结果添加到新数组上。

到目前为止,我已经尝试了一些类似的东西:

import numpy as np
array = np.random.rand(10)
empty_array = np.zeros(10)
for elem in array:
new_val = elem**2

其中empty_array是一个由10个元素组成的数组,设置为零,我的逻辑类似于在另一个列表或数组上循环时初始化一个空列表以添加元素。我被困在如何用"array"中元素的平方替换empty_array的相应元素上。

任何关于如何做到这一点或更好的方法的帮助都将不胜感激!

使用Numpy的原因之一是它在此类情况下的表现力。

>>> import numpy as np
>>> a = np.random.rand(10)
>>> a
array([0.94797029, 0.39628409, 0.64609633, 0.44994779, 0.23083464,
0.60191075, 0.71651581, 0.78152364, 0.05516691, 0.22452054])
>>> a **2
array([0.89864768, 0.15704108, 0.41744046, 0.20245301, 0.05328463,
0.36229656, 0.5133949 , 0.6107792 , 0.00304339, 0.05040947])

您不必迭代原始数组并逐步构建新的数组:您只需"正方形";数组本身。

您可以附加新值,如:

import numpy as np
array = np.random.rand(10)
new_array = []
for elem in array:
new_array.append(elem ** 2)

或者使用列表理解:

import numpy as np
array = np.random.rand(10)
new_array = [e**2 for e in array]

在这种情况下,NumPy矢量化非常方便:

import numpy as np
array = np.random.rand(10)
array2 = array*array

如果你下定决心在循环中计算东西(我不建议这样做,但每个都有自己的(,你会把新值添加到empty_array中,如下所示:

import numpy as np
array = np.random.rand(10)
empty_array = np.zeros(10)
for i in range(array.shape[0]):
# Get element and calculate square.
# Note that using elem**2 is in some cases less efficient than using elem*elem.
elem = array[i]
new_val = elem**2
empty_array[i] = new_val

最新更新