标签: slice

赋值如何与python list slice一起使用

Python doc说切片列表会返回一个新列表.现在,如果返回"新"列表,我有以下与"分配给切片"有关的疑问

a = [1, 2, 3]
a[0:2] = [4, 5]
print a
Run Code Online (Sandbox Code Playgroud)

现在输出将是:

[4, 5, 3] 
Run Code Online (Sandbox Code Playgroud)
  1. 如何能够回归的东西出现在表达的左侧.
  2. 是的,我阅读了文档并且它说它是可能的,因为切片列表返回一个"新"列表,为什么原始列表被修改,我无法理解它背后的机制.

python list slice

83
推荐指数
4
解决办法
4万
查看次数

按标签选择的熊猫有时会返回系列,有时会返回数据帧

在Pandas中,当我选择一个只在索引中有一个条目的标签时,我会返回一个系列,但是当我选择一个包含多个条目的条目时,我会返回一个数据框.

这是为什么?有没有办法确保我总能找回数据框?

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(data=range(5), index=[1, 2, 3, 3, 3])

In [3]: type(df.loc[3])
Out[3]: pandas.core.frame.DataFrame

In [4]: type(df.loc[1])
Out[4]: pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

python series slice dataframe pandas

83
推荐指数
5
解决办法
3万
查看次数

在pandas MultiIndex DataFrame中选择行

目标和动机

(x, y)API已经日益普及,多年来,然而,没有关于它的一切是完全理解在结构方面,工作和相关的操作.

一个重要的操作是过滤.过滤是一种常见的要求,但用例是多种多样的.因此,某些方法和功能将比其他用例更适用于某些用例.

总之,本文的目的是触及一些常见的过滤问题和用例,演示解决这些问题的各种不同方法,并讨论它们的适用性.本文试图解决的一些高级问题是

  • 基于单个值/标签切片
  • 基于来自一个或多个级别的多个标签进行切片
  • 过滤布尔条件和表达式
  • 哪种方法适用于什么情况

这些问题已分解为6个具体问题,如下所列.为简单起见,以下设置中的示例DataFrame仅具有两个级别,并且没有重复的索引键.提出问题的大多数解决方案可以推广到N级.

本文不会介绍如何创建MultiIndexes,如何对它们执行赋值操作,或任何与性能相关的讨论(这些是另一个时间的单独主题).


问题

问题1-6将在上下文中询问下面的设置.

mux = pd.MultiIndex.from_arrays([
    list('aaaabbbbbccddddd'),
    list('tuvwtuvwtuvwtuvw')
], names=['one', 'two'])

df = pd.DataFrame({'col': np.arange(len(mux))}, mux)

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   t      4
    u      5
    v      6
    w      7
    t      8
c   u      9
    v     10
d   w     11
    t     12
    u     13
    v     14
    w     15
Run Code Online (Sandbox Code Playgroud)

问题1:选择单个项目
如何在"1"级中选择"a"的行?

         col
one two     
a   t      0 …
Run Code Online (Sandbox Code Playgroud)

python slice multi-index dataframe pandas

78
推荐指数
2
解决办法
1万
查看次数

存储切片的接口{}上的范围

鉴于你有一个接受的功能的场景t interface{}.如果确定t是切片,我range该如何切片?我不会知道传入的类型,例如[]string,[]int或者[]MyType,在编译时.

func main() {
    data := []string{"one","two","three"}
    test(data)
    moredata := []int{1,2,3}
    test(data)
}

func test(t interface{}) {
    switch reflect.TypeOf(t).Kind() {
    case reflect.Slice:
        // how do I iterate here?
        for _,value := range t {
            fmt.Println(value)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

去游乐场示例:http://play.golang.org/p/DNldAlNShB

reflection go slice go-reflect

76
推荐指数
3
解决办法
5万
查看次数

为什么Python允许序列的超出范围切片索引?

所以我只是遇到了一些奇怪的Python特性,并想要对它进行一些澄清.

以下数组操作有点有意义:

p = [1,2,3]
p[3:] = [4] 
p = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我想它实际上只是将这个值附加到最后,对吗?
但是,我为什么要这样做呢?

p[20:22] = [5,6]
p = [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

更是如此:

p[20:100] = [7,8]
p = [1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

这似乎是错误的逻辑.这似乎应该抛出错误!

任何解释?
- 这只是Python的奇怪之处吗?
- 有目的吗?
- 我是否以错误的方式思考这个问题?

python sequence slice python-3.x range-checking

72
推荐指数
2
解决办法
2874
查看次数

什么是.slice(0)在这里?

当我发现这个时,我正在研究jQuery源代码(v1.5第2295行):

namespace = new RegExp("(^|\\.)" +
  jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么要slice(0)在这里使用?

javascript jquery type-conversion slice

65
推荐指数
3
解决办法
3万
查看次数

在Python中切片列表而不生成副本

我有以下问题.

给定一个整数列表L,我需要生成所有子列表L[k:] for k in [0, len(L) - 1],而不生成副本.

我如何在Python中实现这一目标?以某种方式使用缓冲对象?

python list slice

65
推荐指数
4
解决办法
3万
查看次数

在Go中创建2D切片的简洁方法是什么?

我正在通过A Tour of Go学习Go.其中一个练习要求我创建一个包含dy行和dx列的2D切片uint8.我目前采用的方法是:

a:= make([][]uint8, dy)       // initialize a slice of dy slices
for i:=0;i<dy;i++ {
    a[i] = make([]uint8, dx)  // initialize a slice of dx unit8 in each of dy slices
}
Run Code Online (Sandbox Code Playgroud)

我认为迭代每个切片来初始化它太冗长了.如果切片具有更多尺寸,则代码将变得难以处理.是否有一种简洁的方法来初始化Go中的2D(或n维)切片?

go slice

65
推荐指数
3
解决办法
5万
查看次数

Python切片操作方法,我知道Python切片但是如何使用内置切片对象呢?

内置函数的slice用途是什么?如何使用它?
我知道Pythonic切片的直接方式 - l1[start:stop:step].我想知道我是否有切片对象,那我该如何使用呢?

python slice

64
推荐指数
3
解决办法
4万
查看次数

切片类型

我正在通过优秀的Tour of Go工作.我使用以下解决方案完成了其中一个练习(#45):

func Pic(dx, dy int) [][]uint8 {
    pic := make([][]uint8, dy) /* type declaration */
    for i := range pic {
        pic[i] = make([]uint8, dx) /* again the type? */
        for j := range pic[i] {
            pic[i][j] = uint8((i+j)/2)
        }
    }
    return pic
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我必须使用两次类型的make语句uint8(请参阅代码段中的注释).这似乎是多余的,但我无法弄清楚如何以另一种方式做到这一点.

types go slice

63
推荐指数
2
解决办法
3万
查看次数