我有一个数组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循环,但是到目前为止我还没有成功。有没有人可以帮助我简化这段代码?
答案 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,则可以转到函数定义,例如:
答案 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数组操作的更多信息。