任何人都可以修改namedtuple或提供替代类,以便它适用于可变对象吗?
主要是为了可读性,我想要类似于namedtuple这样做:
from Camelot import namedgroup
Point = namedgroup('Point', ['x', 'y'])
p = Point(0, 0)
p.x = 10
>>> p
Point(x=10, y=0)
>>> p.x *= 10
Point(x=100, y=0)
Run Code Online (Sandbox Code Playgroud)
必须可以腌制生成的对象.并且根据命名元组的特征,当表示时,输出的排序必须与构造对象时参数列表的顺序相匹配.
我有一个清单:
my_list = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
如何将每个元素乘以my_list
5?输出应该是:
[5, 10, 15, 20, 25]
Run Code Online (Sandbox Code Playgroud) 我在python pandas中有一个数据帧.数据帧的结构如下:
a b c d1 d2 d3
10 14 12 44 45 78
Run Code Online (Sandbox Code Playgroud)
我想选择以d开头的列.有没有一种简单的方法来实现这一点在python中.
我有一个NumPy值的数组.我想计算这些值中有多少是在x <100和x> 25的特定范围内.我已经读过有关计数器的信息,但它似乎只对特定值有效,而不是值范围.我搜索过,但没有找到任何关于我的具体问题.如果有人能指出我正确的文件,我会很感激.谢谢
我试过这个
X = array(X)
for X in range(25, 100):
print(X)
Run Code Online (Sandbox Code Playgroud)
但它只是给我25到99之间的数字.
编辑 我使用的数据是由另一个程序创建的.然后我使用脚本来读取数据并将其存储为列表.然后我拿起列表并使用array(r)将其转换为数组.
编辑
运行的结果
>>> a[0:10]
array(['29.63827346', '40.61488812', '25.48300065', '26.22910525',
'42.41172923', '20.15013315', '34.95323355', '13.03604098',
'29.71097606', '9.53222141'],
dtype='<U11')
Run Code Online (Sandbox Code Playgroud) 我有一个处理DataFrame的函数,主要是将数据处理成桶,在特定列中使用创建二进制矩阵的特征pd.get_dummies(df[col])
.
为了避免一次使用此函数处理我的所有数据(内存不足并导致iPython崩溃),我使用以下方法将大型DataFrame分解为块:
chunks = (len(df) / 10000) + 1
df_list = np.array_split(df, chunks)
Run Code Online (Sandbox Code Playgroud)
pd.get_dummies(df)
会自动创建一个基于内容的新栏目df[col]
和这些都有可能为每个不同df
在df_list
.
处理完毕后,我使用以下方法将DataFrame连接在一起:
for i, df_chunk in enumerate(df_list):
print "chunk", i
[x, y] = preprocess_data(df_chunk)
super_x = pd.concat([super_x, x], axis=0)
super_y = pd.concat([super_y, y], axis=0)
print datetime.datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)
第一个块的处理时间是完全可以接受的,然而,它每块增长!这与它没有关系,preprocess_data(df_chunk)
因为没有理由增加它.由于呼叫的结果,是否会增加时间pd.concat()
?
请参阅下面的日志:
chunks 6
chunk 0
2016-04-08 00:22:17.728849
chunk 1
2016-04-08 00:22:42.387693
chunk 2
2016-04-08 00:23:43.124381
chunk 3
2016-04-08 00:25:30.249369
chunk 4
2016-04-08 00:28:11.922305
chunk 5
2016-04-08 00:32:00.357365 …
Run Code Online (Sandbox Code Playgroud) python performance concatenation processing-efficiency pandas
你知道,当你运行的是Android设备的第一次(你看到很多,如果你使用的仿真器),有是关于如何使用发射器和添加小工具一个有用的小教程,等我试图找到一个例子这在Google上,但我不能.我希望你知道我的意思.这是每一步都有蓝色"好"按钮的那个.
无论如何,我想为我的应用程序创建一个,但我不确定哪个是最好的方法去做.
我是否创建了一个片段,我可以在常规活动之上制作半透明片段并让它仅在第一次运行时出现?
我是否为教程的每个部分制作了一个半透明的.png并将其覆盖在第一次运行的常规启动器活动上?
如果我选择后者,我该如何调整各种屏幕尺寸?我可以在Photoshop中将图像渲染到各种尺寸,但这并不能涵盖所有尺寸.如果我去片段路线,我可以说"match_parent"而不用担心它.但后来我必须弄清楚Fragments是如何工作的,而且他们让我感到困惑.
JSON编码器的默认行为是将NaN转换为'NaN',例如json.dumps(np.NaN)导致'NaN'.如何将此"NaN"值更改为"null"?
我试图子类化JSONEncoder并实现default()方法,如下所示:
from json import JSONEncoder, dumps
import numpy as np
class NanConverter(JSONEncoder):
def default(self, obj):
try:
_ = iter(obj)
except TypeError:
if isinstance(obj, float) and np.isnan(obj):
return "null"
return JSONEncoder.default(self, obj)
>>> d = {'a': 1, 'b': 2, 'c': 3, 'e': np.nan, 'f': [1, np.nan, 3]}
>>> dumps(d, cls=NanConverter)
'{"a": 1, "c": 3, "b": 2, "e": NaN, "f": [1, NaN, 3]}'
Run Code Online (Sandbox Code Playgroud)
预期结果:'{"a":1,"c":3,"b":2,"e":null,"f":[1,null,3]}'
我有以下数据帧:
a b x y
0 1 2 3 -1
1 2 4 6 -2
2 3 6 9 -3
3 4 8 12 -4
Run Code Online (Sandbox Code Playgroud)
如何移动列b和x,使它们成为数据框中的最后2列?我想按名称指定b和x,而不是其他列.
msgpack
在熊猫应该是一个替代品pickle
.
这是一种轻量级的可移植二进制格式,类似于二进制JSON,具有很高的空间效率,并且在写入(序列化)和读取(反序列化)方面都提供了良好的性能.
然而,我发现它的性能似乎与咸菜不相上下.
df = pd.DataFrame(np.random.randn(10000, 100))
>>> %timeit df.to_pickle('test.p')
10 loops, best of 3: 22.4 ms per loop
>>> %timeit df.to_msgpack('test.msg')
10 loops, best of 3: 36.4 ms per loop
>>> %timeit pd.read_pickle('test.p')
100 loops, best of 3: 10.5 ms per loop
>>> %timeit pd.read_msgpack('test.msg')
10 loops, best of 3: 24.6 ms per loop
Run Code Online (Sandbox Code Playgroud)
问题: 除了泡菜的潜在安全问题,msgpack对pickle有什么好处?pickle仍然是序列化数据的首选方法,还是目前存在更好的替代方案?
是否可以将matplotlib步骤函数中的linestyle设置为虚线,点线等?
我试过了:
step(x, linestyle='--'),
step(x, '--')
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
python ×9
pandas ×4
numpy ×2
android ×1
arrays ×1
dataframe ×1
json ×1
linestyle ×1
list ×1
matplotlib ×1
msgpack ×1
mutable ×1
namedtuple ×1
nan ×1
performance ×1
python-2.7 ×1