我有一个N x N Numpy数组。 我需要以特定方式操纵第i列,并以不同但常见的方式操作其余列。我如何以numpythonic方式做到这一点。参数i被传递给要使用的函数。
示例:
a=np.zeros([4,4])
现在,我们需要第1个,第2个和第4个,说明要是方形元素。 第3个元素是元素。
答案 0 :(得分:1)
most_of_the_result = do_whatever(numpy.delete(arr, col_index, axis=1))
insertion_column = do_other_thing(arr[:, col_index])
result = numpy.insert(most_of_the_result, col_index, insertion_column, axis=1)
或
result = do_whatever(arr)
special_column = do_other_thing(arr[:, col_index])
result[:, col_index] = special_column
答案 1 :(得分:0)
您可以使用一组数字来选择要操作的列。例如,您可以说:
a[:,(0,1,3)] = a[:,(0,1,3)]**2
到第1,2列和第4列。记住它们是从零开始索引的。
更一般地说,如果您只想操纵列X
以外的所有内容,那么您可以
sel = range(a.shape[1])
sel.remove(X)
a[:, sel] = a[:, sel]**2
答案 2 :(得分:0)
由于将0提高到任何功率仍为0,所以让我们使用2s。
import numpy as np
a = np.full((4, 4), 2.0)
a[:, 2] = a[:, 2]**3
ci = [i for i in range(a.shape[1]) if i != 2]
a[:, ci] = a[:, ci]**2