将函数应用于numpy数组中的列

时间:2016-11-14 08:31:29

标签: arrays function numpy in-place

我试图编写一个仅应用于numpy数组中特定列的函数,并将输入值替换为新计算的值。

例如,我的数组看起来像

array = np.arange(1,28).reshape(3,3,3)

是:

[[[ 1  2  3]
  [ 4  5  6]
  [ 7  8  9]]

 [[10 11 12]
  [13 14 15]
  [16 17 18]]

 [[19 20 21]
  [22 23 24]
  [25 26 27]]]

现在我想将我的函数应用于内部数组的第一列中的值(1,4,7,10,13,16,19,22,25)

如果我将我的功能定义为

def myfunc(x):
    return x * x

我希望获得以下输出(不是仅包含切片值的单独数组)

[[[  1  2  3]
  [ 16  5  6]
  [ 49  8  9]]

 [[100 11 12]
  [169 14 15]
  [256 17 18]]

 [[361 20 21]
  [484 23 24]
  [625 26 27]]]

我阅读了几个教程等,建议将数组切换为array[:,:,0]以获取第一列,但这种方法会对新数组进行计算,并且不会对原始元素进行操作阵列。我想,我可以使用原始数据对新生成的数组进行vstack。但是有更好的解决方案吗?

非常感谢你!

0 个答案:

没有答案