按数组切片

时间:2019-12-19 11:13:36

标签: python arrays numpy slice

我有一个如下数组:

https://API_URL_HERE.amazonaws.com/API_NAME?q=someSearchData&q.options={fields:['tag^2']}"

我还有一个向量 A = [[ 1. 2. 3. 0. 0. 0. 0.] [ 4. 5. 6. 0. 0. 0. 0.] [ 7. 8. 9. 0. 0. 0. 0.] [ 10. 11. 12. 0. 0. 0. 0.] [ 13. 14. 15. 0. 0. 0. 0.] [ 16. 17. 18. 0. 0. 0. 0.] [ 19. 20. 21. 0. 0. 0. 0.] [ 22. 23. 24. 0. 0. 0. 0.] [ 25. 26. 27. 0. 0. 0. 0.] [ 28. 29. 30. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0. 0.]] ,它告诉我在左上角需要切片的位置才能获得子矩阵:

v=[10, 3]

假设我现在有一个n维数组 A[0:v[0], 0:v[1]] = [[ 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.] [ 28. 29. 30.]] ,在它的左上角有一个子矩阵,如上所述。同样,有一个向量A_n告诉我子矩阵的范围。

如何用向量对n维数组进行切片而无需手动写每个索引范围(即v_n)?

3 个答案:

答案 0 :(得分:3)

您可以通过mappinng构造A_n[tuple(map(slice, V_n))]个对象(冒号表示基本表示)的元组:

V_n = [10, 3]

因此,如果>>> tuple(map(slice, [10, 3])) (slice(None, 10, None), slice(None, 3, None)) ,我们将通过它:

[:10, :3]

这基本上是 metadata_employeegroup = pd.get_dummies(df['metadata_employeegroup'],prefix='metadata_employeegroup',drop_first=True) df = pd.concat([df,metadata_employeegroup],axis=1) 含义的替代版本。

答案 1 :(得分:1)

我认为将resopnseBody = context.Response.Content.ReadAsStringAsync().Result; 转换为一个numpy数组,然后使用列表推导对其进行切片就足够了:

A_n

答案 2 :(得分:0)

检查以下代码:

A = [[1., 2., 3., 0., 0., 0., 0.], [4., 5., 6., 0., 0., 0., 0.], [7., 8., 9., 0., 0., 0., 0.],
     [10., 11., 12., 0., 0., 0., 0.], [13., 14., 15., 0., 0., 0., 0.], [16., 17., 18., 0., 0., 0., 0.],
     [19., 20., 21., 0., 0., 0., 0.], [22., 23., 24., 0., 0., 0., 0.], [25., 26., 27., 0., 0., 0., 0.],
     [28., 29., 30., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0.]]
n = [10,3]
arrayA = []
for i in range(0,n[0]):
    tempArray = []
    for j in range(0,n[1]):
        tempArray.append(j)
    arrayA.append(tempArray)
print(arrayA)