【发布时间】:2020-01-13 20:48:22
【问题描述】:
关于切片 numpy 数组的问题。
假设我有一个数组:
A = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
[1 2 3]
[4 5 6]
[7 8 9]
和索引:
idx = [2,2,1]
我想达到每一行的索引值..即第一行[:2],第二行[:2],第三行[:1]。我也想对切片进行求和。
我知道我可以通过以下方式实现这一目标:
for i,a in zip(idx,A):
print(a[:i],sum(a[:i]))
输出:
[1 2] 3
[4 5] 9
[7] 7
无论如何,这可以在没有 for 循环的情况下实现吗?主要重点是做不规则切片,总和只是我想要执行的任意操作。
类似:
A[:,:idx]
只是为了说明我的意思
【问题讨论】:
-
我认为您的问题需要更多上下文,因为在提供的示例中,您得到的是下三角形,然后水平求和,即结果可能是
np.tril(A).sum(1) -
这只是一个随机的例子...我想提供一个索引列表(与 A 中的行数相同的长度)并按相应的索引对 A 的每一行进行切片
-
我更改了索引,所以很明显我不想要三角形
标签: python numpy indexing slice