pav*_*163 3 python arrays numpy
我有一个数组:
a = [1, 3, 5, 7, 29 ... 5030, 6000]
Run Code Online (Sandbox Code Playgroud)
此数组是从先前的进程创建的,并且数组的长度可能不同(它取决于用户输入).
我也有一个数组:
b = [3, 15, 67, 78, 138]
Run Code Online (Sandbox Code Playgroud)
(也可能完全不同)
我想使用该数组将数组b切片a为多个数组.
更具体地说,我希望结果数组为:
array1 = a[:3]
array2 = a[3:15]
...
arrayn = a[138:]
Run Code Online (Sandbox Code Playgroud)
哪里n = len(b).
我的第一个想法是创建一个slices带维度的二维数组(len(b), something).但是我们something事先并不知道这个,所以我给它分配了值,len(a)因为它是它可以包含的最大数量.
我有这个代码:
slices = np.zeros((len(b), len(a)))
for i in range(1, len(b)):
slices[i] = a[b[i-1]:b[i]]
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
ValueError: could not broadcast input array from shape (518) into shape (2253412)
Run Code Online (Sandbox Code Playgroud)
你可以使用numpy.split:
np.split(a, b)
Run Code Online (Sandbox Code Playgroud)
示例:
np.split(np.arange(10), [3,5])
# [array([0, 1, 2]), array([3, 4]), array([5, 6, 7, 8, 9])]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |