【发布时间】:2019-02-02 16:21:18
【问题描述】:
假设我有一个数组:
my_array = np.random.normal(size=(5,3))
print(my_array)
[[ 0.45110035 -1.08385534 1.2126054 ]
[ 1.51280316 0.4308235 -0.31839059]
[-0.00348102 -0.50814392 0.00734745]
[-0.63701191 0.95413945 -1.40480595]
[-1.66723431 -0.52822503 -1.14282036]]
以及与列数长度相同的索引列表:
my_indices = np.array([3, 1, 2])
对于my_array 中的每一列,我想从my_indices 获取相应的索引,并将该元素和该列的所有后续元素设置为某个新值。换句话说,结果看起来像:
my_new_array = np.something(my_array, my_indices, 23)
print(my_new_array)
[[ 0.45110035 -1.08385534 1.2126054 ]
[ 1.51280316 23.0 -0.31839059]
[-0.00348102 23.0 23.0 ]
[ 23.0 23.0 23.0 ]
[ 23.0 23.0 23.0 ]]
# i.e.:
# col[3:]=23 col[1:]=23 col[2:]=23
实现这一目标的最简单的方法是什么?我知道我可以用一个简单的 for 循环来做到这一点,但这对 numpy 来说是不好的做法。我的直觉是通过广播和矢量化可能有一些聪明的快速方法,但我想不通。
【问题讨论】:
标签: python numpy vectorization