numpy 如何在python中使用循环输出修改后的数组?

lfapxunr  于 2023-06-29  发布在  Python
关注(0)|答案(1)|浏览(124)

例如,我有一个numpy数组:

import numpy as np

l1 = [2, 1, 5, 2]
l2 = [4, 2, 3, 3]

arr_in = np.array([l1,l2])
arr_in
array([[2, 1, 5, 2],
       [4, 2, 3, 3]])

我想对每个值做一个简单的数学运算(例如:平方并加上一个常数,x^2 + 1)并得到以下数组:

arr_out # my modified array
array([[5, 2, 26, 5],
       [17, 5, 10, 10]])

看起来可以通过按索引的第一个元素进行分组来做到这一点-例如。0和1:

for i, value in np.ndenumerate(arr_in):
    dbl = pow(value,2) + 1
    print(i[0],dbl)

0 5
0 2
0 26
0 5
1 17
1 5
1 10
1 10

我该怎么做?

rmbxnbpk

rmbxnbpk1#

在使用Numpy数组时,可以使用broadcasting。广播,顾名思义,就是在整个数组上 * 广播 * 操作。所以,如果你有一个数组arr,并做arr**2,取幂运算将在整个数组中传播,得到arr,但每个元素都是平方的。根据数组的形状,执行类似arr1 + arr2的操作时,情况会有所不同,但链接文档中对此进行了概述。
因此,对于您的问题,您可以直接将操作应用于arr_in以获得所需的arr_out

import numpy as np

l1 = [2, 1, 5, 2]
l2 = [4, 2, 3, 3]

arr_in = np.array([l1,l2])
arr_out = arr_in**2 + 1
print(arr_out)

输出:

[[ 5  2 26  5]
 [17  5 10 10]]

请注意,arr_out的类型为np.int32

相关问题