假设我们有以下数组:
import numpy as np
a = np.arange(1, 10)
a = a.reshape(len(a), 1)
array([[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])
Run Code Online (Sandbox Code Playgroud)
现在,我想访问从索引4到结尾的元素:
a[3:-1]
array([[4],
[5],
[6],
[7],
[8]])
Run Code Online (Sandbox Code Playgroud)
当我这样做时,结果向量缺少最后一个元素,现在有五个元素而不是六个元素,为什么会发生,我怎样才能获得最后一个元素而不附加它?
预期产量:
array([[4],
[5],
[6],
[7],
[8],
[9]])
Run Code Online (Sandbox Code Playgroud)
提前致谢
可能重复:
Python切片表示法
我正在尝试将一些Python代码移植到C,但我遇到了这一行,我无法弄清楚它的含义:
if message.startswith('<stream:stream'):
message = message[:-1] + ' />'
Run Code Online (Sandbox Code Playgroud)
我明白,如果' message从那开始,<stream:stream那么需要附加一些东西.但是,我似乎无法弄清楚应该追加的位置.我完全不知道是什么:-1表明.我做了几次谷歌搜索没有结果.
有人会如此善意地解释这是做什么的吗?
我以为我理解了python中列表切片的基础知识,但是在切片上使用负步骤时收到了意外错误,如下所示:
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:-1]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[:-1:-1]
[]
Run Code Online (Sandbox Code Playgroud)
(请注意,这是在Python 3.5中运行)
为什么[: - 1:-1]不会以与使用[:: - 1]的整个列表相同的方式反向遍历a [: - 1]切片?
我意识到你也可以使用list.reverse(),但试图更好地理解底层的python切片功能.
有人给了我一个截断字符串的语法,如下所示:
string = "My Text String"
print string [0:3] # This is just an example
Run Code Online (Sandbox Code Playgroud)
我不确定这是什么(字符串[0:3]语法),所以我很难在互联网上查找它并理解它是如何工作的.到目前为止,我认为它的工作原理如下:
无论如何,我可以添加一些其他示例,但我的观点是我是这个功能的新手,我想知道它的名称以及我可以在哪里找到更多相关信息.我确定我在某个地方错过了一个很好的参考.
谢谢你的任何建议,迈克
我们可以(浅)复制a list使用[:]:
l = [1, 2, 3]
z1 = l[:]
Run Code Online (Sandbox Code Playgroud)
我们也可以(浅)复制它[::]:
z2 = l[::]
Run Code Online (Sandbox Code Playgroud)
现在z1 == z2将True.在阅读了Explain Python的切片表示法中的答案之后,我理解这些切片是如何工作的.
但是,我的问题是,这两者内部有什么区别吗?复制中的一个比另一个更有效,还是做同样的事情?
我是Python的新手,并且在我的书中遇到了以下示例,但没有得到很好的解释.这是我从翻译中打印出来的:
>>> s = 'spam'
>>> s[:-1]
'spa'
Run Code Online (Sandbox Code Playgroud)
为什么切片没有开始绑定并'-1'返回除最后一个之外的每个元素?在呼叫s[0:-1]逻辑上与呼叫相同s[:-1]吗?它们都返回相同的结果.但我不确定python正在做什么.任何帮助将不胜感激.
使用Python,我发现很难让filter()与lambda一起工作,因为需要传递多于1个参数的情况,如下面的代码片段所示:
max_validation = lambda x,y,z: x < y < z
sequence1 = [1,4,8]
filter(max_validation, sequence1)
Run Code Online (Sandbox Code Playgroud)
它引发了以下错误:
TypeError: <lambda>() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
请在这里建议我做错了什么.
假设我有一个字符串
Str1 = "TN 81 NZ 0025"
str2 = "DL 11C AA 1111"
two = first2(str1)
print(two)
>>>TN
Run Code Online (Sandbox Code Playgroud)
如何获取这些字符串的前两个字母.我需要first2函数.
我有一个pytorch尺寸张量torch.Size([4, 3, 966, 1296])
我想numpy使用以下代码将其转换为数组:
imgs = imgs.numpy()[:, ::-1, :, :]
任何人都可以解释这段代码在做什么?