我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).
对我来说,这种符号需要一点点提升.
它看起来非常强大,但我还没有完全了解它.
在以下示例中:
foo = ['red', 'white', 'blue', 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
其中:foo[0:6:1]将打印foo中的所有元素.但是,foo[6:0:-1]将省略第1或第0个元素.
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用foo.reverse()或foo [:: - 1]反向打印列表,但我试图理解为什么foo [6:0:-1]不打印整个列表?
我的问题的一个具体例子是,"在这个例子中我如何得到'3210'?"
>>> foo = '0123456'
>>> foo[0:4]
'0123'
>>> foo[::-1]
'6543210'
>>> foo[4:0:-1] # I was shooting for '3210' but made a fencepost error, that's fine, but...
'4321'
>>> foo[3:-1:-1] # How can I get '3210'?
''
>>> foo[3:0:-1]
'321'
Run Code Online (Sandbox Code Playgroud)
看起来很奇怪,我可以写foo [4:0:-1],foo [5:1:-1]等等,并得到我所期望的,但是没有办法写切片让我得到'3210 ".
这样做的临时方法是foo [0:4] [:: - 1],但这会在进程中创建两个字符串对象.我将在数十亿次执行此操作,因此每个字符串操作都很昂贵.
我一定要错过愚蠢和容易的事情.谢谢你的帮助!
假设我想循环遍历数组并在循环索引中向前和向后索引所有索引,如下所示:
x = np.random.uniform(size=600)
for i in range(len(x)):
dot = np.dot(x[:-i], x[i:])
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,因为x[:-0]就像x[:0]它给出的那样[].我可以单独处理零情况但是想知道是否有更多的pythonic方式来做这件事.
我试图用数组切片以逆转的一部分,NumPy的阵列.例如,如果我的数组是
a = np.array([1,2,3,4,5,6])
Run Code Online (Sandbox Code Playgroud)
然后我可以得到一个切片b
b = a[::-1]
Run Code Online (Sandbox Code Playgroud)
这是原始数组的视图.我想要的是一个部分逆转的观点,例如
1,4,3,2,5,6
Run Code Online (Sandbox Code Playgroud)
我所遇到的性能问题NumPy的,如果你不准确以及它是如何设计的发挥,所以我想避免"花哨"的索引,如果它是可能的.