首页 > 解决方案 > 将值添加到新数组

问题描述

我有一个用零实例化的现有 python 数组。如何迭代和更改值?

我无法遍历和更改 Python 数组的元素?

num_list = [1,2,3,3,4,5,]
mu = np.mean(num_list)
sigma = np.std(num_list)
std_array = np.zeros(len(num_list))

for i in std_array:
        temp_num = ((i-mu)/sigma)
        std_array[i]=temp_num

这是错误:只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效索引

标签: pythonarraysnumpy

解决方案


在您的代码中,您正在迭代 的元素numpy.array std_array,然后将这些元素用作取消引用的索引std_array。一个简单的解决方案如下。

num_arr = np.array(num_list)
for i,element in enumerate(num_arr):
    temp_num = (element-mu)/sigma
    std_array[i]=temp_num

我假设您想num_list在计算时使用循环第一行中的值temp_num。请注意,我创建了一个新的numpy.array被调用num_arr。这是因为我们可以使用利用广播的替代解决方案,而不是循环:

std_array = (num_arr-mu)/sigma

这相当于循环,但执行速度更快且更简单。


推荐阅读