小编MSe*_*ert的帖子

Pandas DataFrame 的三次根

我了解如何计算正数和负数的立方根。但是,当尝试使用apply-lambda方法有效处理数据帧的所有元素时,我遇到了歧义问题。有趣的是,这个错误不会因相等而出现,所以我想知道代码可能有什么问题:

sample[columns]=sample[columns].apply(lambda x: (-1)*np.power(-x,1./3) if x<0 else np.power(x,1./3))
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe python-3.x pandas

4
推荐指数
1
解决办法
4930
查看次数

如何在numpy的二维矩阵中随机采样

我有一个像这样的二维数组/矩阵,我将如何从这个二维矩阵中随机选择值,例如获得像[-62, 29.23]. 我看了看,numpy.choice但它是为一维数组构建的。

以下是我的 4 行 8 列示例

Space_Position=[
      [[-62,29.23],[-49.73,29.23],[-31.82,29.23],[-14.2,29.23],[3.51,29.23],[21.21,29.23],[39.04,29.23],[57.1,29.23]],

      [[-62,11.28],[-49.73,11.28],[-31.82,11.28],[-14.2,11.28],[3.51,11.28],[21.21,11.28] ,[39.04,11.28],[57.1,11.8]],

      [[-62,-5.54],[-49.73,-5.54],[-31.82,-5.54] ,[-14.2,-5.54],[3.51,-5.54],[21.21,-5.54],[39.04,-5.54],[57.1,-5.54]],

      [[-62,-23.1],[-49.73,-23.1],[-31.82,-23.1],[-14.2,-23.1],[3.51,-23.1],[21.21,-23.1],[39.04,-23.1] ,[57.1,-23.1]]
      ]
Run Code Online (Sandbox Code Playgroud)

在答案中给出了以下解决方案:

random_index1 = np.random.randint(0, Space_Position.shape[0])
random_index2 = np.random.randint(0, Space_Position.shape[1])
Space_Position[random_index1][random_index2]
Run Code Online (Sandbox Code Playgroud)

这确实可以给我一个样本,多一个样本怎么样np.choice()

我在想的另一种方法是将矩阵转换为数组而不是矩阵,例如,

Space_Position=[
      [-62,29.23],[-49.73,29.23],[-31.82,29.23],[-14.2,29.23],[3.51,29.23],[21.21,29.23],[39.04,29.23],[57.1,29.23], .....   ]
Run Code Online (Sandbox Code Playgroud)

最后使用np.choice(),但是我找不到进行转换的方法,np.flatten()使数组像

Space_Position=[-62,29.23,-49.73,29.2, ....]
Run Code Online (Sandbox Code Playgroud)

python arrays random numpy matrix

4
推荐指数
1
解决办法
9522
查看次数

4
推荐指数
1
解决办法
84
查看次数

字典整数作为键和函数作为值?

这是我的代码:

def test1():
  print("nr1")

def test2():
  print("nr2")

def test3():
  print("nr3")

def main():
  dictionary = { 1: test1(), 2: test2(), 3: test3() }
  dictionary[2]

if __name__ == "__main__":
  main()
Run Code Online (Sandbox Code Playgroud)

此代码返回:

nr1
nr2
nr3
Run Code Online (Sandbox Code Playgroud)

我需要在代码中更改以获取此信息:

nr2
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 2.7.13.

python dictionary function python-2.7

4
推荐指数
1
解决办法
3020
查看次数

生成器和文件

我写的时候:

lines = (line.strip() for line in open('a_file'))
Run Code Online (Sandbox Code Playgroud)

文件是立即打开还是仅在我开始使用生成器表达式时才访问文件系统?

python generator generator-expression operator-precedence

4
推荐指数
2
解决办法
96
查看次数

python set union 操作对于命名元组表现不佳

我想在 python 中创建一组namedtuple,能够使用联合操作动态添加元素。

下面的代码片段创建了一个setof namedtuple,它表现得很好。

from collections import namedtuple

B = namedtuple('B', 'name x')

b1 = B('b1',90)
b2 = B('b2',92)
s = set([b1,b2])
print(s)
Run Code Online (Sandbox Code Playgroud)

打印

{B(name='b1', x=90), B(name='b2', x=92)}
Run Code Online (Sandbox Code Playgroud)

现在,如果我创建另一个namedtuple并将其添加到我的操作setunion,它的行为将不会按预期进行。

b3 = B('b3',93)
s = s.union(b3)
print(s)
Run Code Online (Sandbox Code Playgroud)

该代码片段打印以下输出。

{93, B(name='b1', x=90), B(name='b2', x=92), 'b3'}
Run Code Online (Sandbox Code Playgroud)

预期输出应该是:

{B(name='b1', x=90), B(name='b2', x=92), B(name='b3', x=93)}
Run Code Online (Sandbox Code Playgroud)

我是不是对API理解有误?python2 和 3 都显示出相同的行为。

python set namedtuple python-collections

4
推荐指数
1
解决办法
779
查看次数

Python"for in"循环打印列表中的最后一项

最近我学习了列表和for循环,以及.pop()指示和删除列表中最后一项的命令.

所以我试着编写一个代码来逐个删除列表中的最后一项,直到它只剩下一个项目.

代码是:

list_A = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

for i in list_A:
    print(list_A.pop())
    if 'c' not in list_A:
        break

print("job done.")
Run Code Online (Sandbox Code Playgroud)

python 3.6的输出给了我:

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
j
i
h
g
f
job done.
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它确实有效,但只有一半呢?

我在期待:

j
i
h
g
f
e
d
c
job done
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果它返回一些错误,我会更舒服,这意味着代码不正确.但为什么它有效,但不是完整的方式?

python for-loop list python-3.x

4
推荐指数
1
解决办法
6916
查看次数

如何从PyListObject中"pop"元素?

让我说我有一个PyListObject,我想附加一个PyObject然后我可以使用PyList_Append记录在其中的API List Objects C-API.但是对于我的用例,我想要pop一个元素PyListObject(即my_list.pop()在python层中).

但是List Objects C-API文档没有提到有关pop操作的任何内容.

那么有关于PyListPopAPI函数的文档吗?

python cpython list python-c-api python-3.x

4
推荐指数
1
解决办法
201
查看次数

是否可以声明一个类变量,它将产生两个其他类变量的总和

class my_class(object):
    def __init__(self):
        self.ref        = 0
        self.ask        = 0
        self.added      = self.ref + self.ask 

inst = my_class()
inst.ref   = 5
inst.ask   = 7
print(inst.ref + inst.ask)
print(inst.added)
Run Code Online (Sandbox Code Playgroud)

我想print(inst.added)返回12但它返回0

python oop

3
推荐指数
1
解决办法
56
查看次数

删除列表中与大多数条目长度不同的元素

我知道如果列表中的元素没有特定的大小,如何删除它:

x = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2],[1,2,3],[1,2,3],[1,2,3,4]]
y = [s for s in x if len(s) == len(x[0])]
Run Code Online (Sandbox Code Playgroud)

x原始列表在哪里,y是新列表.正如你在第一个中看到的那样,有一个条目不像其他条目那么长,而一个条目比其他条目长.

我想删除一个元素,每次它与列表中的大多数元素的长度不同.只要列表中的第一个元素与大多数元素具有相同的长度,显示的方法就可以工作.

所以问题是如何获得最常见的元素长度?没有循环迭代的长度.平均值不起作用,因为平均值不代表大部分长度而是元素的平均长度(例如长度3,3,3,30将给出平均值~10,而长度的主要值为3).

python list

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