我了解如何计算正数和负数的立方根。但是,当尝试使用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) 我有一个像这样的二维数组/矩阵,我将如何从这个二维矩阵中随机选择值,例如获得像[-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) 以下将打印'ok':
if 5:
print('ok')
Run Code Online (Sandbox Code Playgroud)
然而当我这样做时:
print(5 == True)
Run Code Online (Sandbox Code Playgroud)
输出是False.
字符串也会发生同样的事情.为什么?
这是我的代码:
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.
我写的时候:
lines = (line.strip() for line in open('a_file'))
Run Code Online (Sandbox Code Playgroud)
文件是立即打开还是仅在我开始使用生成器表达式时才访问文件系统?
我想在 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并将其添加到我的操作set中union,它的行为将不会按预期进行。
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 都显示出相同的行为。
最近我学习了列表和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)
我的意思是,如果它返回一些错误,我会更舒服,这意味着代码不正确.但为什么它有效,但不是完整的方式?
让我说我有一个PyListObject,我想附加一个PyObject然后我可以使用PyList_Append记录在其中的API List Objects C-API.但是对于我的用例,我想要pop一个元素PyListObject(即my_list.pop()在python层中).
但是List Objects C-API文档没有提到有关pop操作的任何内容.
那么有关于PyListPopAPI函数的文档吗?
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
我知道如果列表中的元素没有特定的大小,如何删除它:
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 ×10
list ×3
python-3.x ×3
numpy ×2
arrays ×1
boolean ×1
cpython ×1
dataframe ×1
dictionary ×1
evaluation ×1
for-loop ×1
function ×1
generator ×1
matrix ×1
namedtuple ×1
oop ×1
pandas ×1
python-2.7 ×1
python-c-api ×1
random ×1
set ×1
string ×1
truthiness ×1