数组的循环

时间:2018-06-24 16:45:10

标签: python arrays loops numpy

我有一个数组vAgarch,我正试图从中提取每个元素,所以现在有以下代码:

vAgarch = [0.05, 0.03, 0.04, 0.05, 0.03, 0.04]
vAgarch = np.array(vAgarch)

# Extract each element from array vAgarch
dA1garch = np.fabs(vAgarch[0])
dA2garch = np.fabs(vAgarch[1])
dA3garch = np.fabs(vAgarch[2])
dA4garch = np.fabs(vAgarch[3])
dA5garch = np.fabs(vAgarch[4])
dA6garch = np.fabs(vAgarch[5])

但是,这可能更容易吧?我的数组稍后将包含40个元素,我认为可以使用for循环来简化此代码。我尝试了几次for循环,但是到目前为止我还没有成功。有没有人可以帮助我简化这段代码?

4 个答案:

答案 0 :(得分:0)

如果不为dAgarch使用单独的变量名,则可以使用循环。

vAgarch= [0.05, 0.03, 0.04, 0.05, 0.03, 0.04]
dAgarch=np.zeros(vAgarch.size)
vAgarch= np.array(vAgarch)

# Extract each element from array vAgarch
count =0
while(count<dAgarch.size):
    dAgarch[count]= np.fabs(vAgarch[count])
    count+=1

或者您要求循环

for count in range(0,dAgarch.size):
    dAgarch[count]= np.fabs(vAgarch[count])

答案 1 :(得分:0)

不需要使用for循环,numpy fabs的参数可以为array_like,因此您可以将列表传递给它。如下代码(我将vAgarch中的某些元素改为了负):

def test_s():
    vAgarch = [-0.05, 0.03, -0.04, 0.05, 0.03, 0.04]
    print vAgarch
    # [-0.05, 0.03, -0.04, 0.05, 0.03, 0.04]

    # equivalent to a for loop
    arr2 = np.fabs(vAgarch)
    print arr2   # arr2 is a new array, all its elements is plus
    # [ 0.05  0.03  0.04  0.05  0.03  0.04]

    print vAgarch[0]
    # -0.05
    print arr2[0]
    # 0.05

您还可以在https://docs.scipy.org/doc/numpy/reference/generated/numpy.fabs.html中查看教程。

或者,如果您使用pycharm,则可以转到函数定义,例如:

enter image description here

enter image description here

答案 2 :(得分:0)

是否有特定原因想要将所有内容都放在独立变量中?我可能会遗漏您的意思,但是如果我了解您的需求,我会提出其他建议。

正如Jayhello所述,您可以将原始的numpy数组直接提供给np.fabs()。您在评论中表示不想使用列表,因为也希望将这些值放在另一个列表中,但是使用np.append()使用列表也可以做到这一点。假设您要将它们添加到的数组为master_array,则可以执行以下操作:

import numpy as np

# other code here

new_arr = np.fabs(vAgarch)
master_array = np.append(master_array, new_arr)

在调用fabs()之后,会将vAgarch列表中的每个元素附加到另一个列表中。如果您只想添加数组的特定元素,则可以按索引(即new_arr[2])引用它们,而不是为每个元素创建单独的变量。

答案 3 :(得分:0)

arr = np.fabs(vAgarch)

就足够了。 在numpy中,几乎所有的function参数都可以是array_like(列表或numpy数组),并返回array。

因此不需要使用for循环。我建议您学习有关numpy数组操作的更多信息。