例如,我有一个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
我该怎么做?
1条答案
按热度按时间rmbxnbpk1#
在使用Numpy数组时,可以使用broadcasting。广播,顾名思义,就是在整个数组上 * 广播 * 操作。所以,如果你有一个数组
arr
,并做arr**2
,取幂运算将在整个数组中传播,得到arr
,但每个元素都是平方的。根据数组的形状,执行类似arr1 + arr2
的操作时,情况会有所不同,但链接文档中对此进行了概述。因此,对于您的问题,您可以直接将操作应用于
arr_in
以获得所需的arr_out
。输出:
请注意,
arr_out
的类型为np.int32
。