Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用变量指示索引范围_Python_Arrays_Multidimensional Array - Fatal编程技术网

Python 使用变量指示索引范围

Python 使用变量指示索引范围,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我想创建一个包含索引的列表,用于从另一个列表中获取元素 一个简单的例子: A = [5,6,7,8,9,10] b = 2:4 然后我想做一些类似的事情 C = A[b] 这就像说C=A[2:4] 我想稍后将其扩展到多维数组,例如b=[2:4,5:6],我可以简单地调用A[b]从A中提取多维数组。您可以将b定义为一个对象来实现这一点: In[9]: A = [5,6,7,8,9,10] b = slice(2,4) A[b] Out[9]: [7, 8] 关于您的其他

我想创建一个包含索引的列表,用于从另一个列表中获取元素

一个简单的例子:

A = [5,6,7,8,9,10]    
b = 2:4  
然后我想做一些类似的事情

C = A[b]
这就像说C=A[2:4]


我想稍后将其扩展到多维数组,例如b=[2:4,5:6],我可以简单地调用A[b]从A中提取多维数组。

您可以将
b
定义为一个对象来实现这一点:

In[9]:
A = [5,6,7,8,9,10]    
b = slice(2,4)
A[b]

Out[9]: [7, 8]
关于您的其他需求,我认为如果您创建一个包含2个
slice
对象的列表对象,那么它应该实现您想要的:

In[18]:
import numpy as np
a = np.arange(100).reshape(10,10)
b = [slice(1,3), slice(3,4)]
a[b]

Out[18]: 
array([[13],
       [23]])

您可以使用直接python,例如使用切片:

>>> A = [5,6,7,8,9,10]    
>>> b = slice(2,4)
>>> A[b]
[7, 8]
但这并不能很好地扩展到nd阵列。要做到这一点,我建议使用numpy函数,它完全满足您的要求,而无需为每个轴显式构造
切片

>>> b = np.s_[2:4]
>>> A[b]
[7, 8]
这很好地扩展到二维阵列:

>>> A = np.ones(10, 10)
>>> b = np.s_[2:4, 5:6]
>>> A[b]
array([[ 1.],
       [ 1.]])

如果
b
是一个元组而不是一个列表,那么第二种情况将更接近
a[1:3,3:4]
。当使用列表索引时,可能会有不同的类型作出不同的反应。@BlackJack使用
切片列表
s索引列表在这种情况下不起作用,但OP没有给出示例,因此我假设为np数组