Deep Learning 8 Python 广播机制/apply/map/zip等
[TOC]
Python - 广播机制
Python - apply
[维持原来的维度数]
应用场景:对于一个DataFrame
1、利用函数进行apply
然后通过给apply
传入一个参数是一个映射的函数apply(func)
,然后进行映射的方式就是func函数所表达的方式
def get_length(text):
return len(text)
train['new_length'] = train['text'].apply(get_length)
2、利用lambda
然后直接进行转换
train['new_length'] = train['text'].apply(lambda x: len(x))
Python - map
[降低原来的维度数]
无规则映射都是可以的。【在没有设定规则的映射下,映射方式就是通过离散型数据进行映射,自动按照长度进行映射】
也就是1-500的范围或者是abcd多少个种类,一般连续性的都没法map,因为就算map映射了之后也是各自为一个长度的直方体
- 把一个csv中的某一列(全都是字符串)映射到一个这一列的长度的数组中
tweet_len = tweet.text.str.len()
tweet_len.value_counts().plot.bar()
如果按照零一进行提取
# value str length
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
# get lens list
tweet_len_1 = tweet[tweet['target'] == 1]['text'].str.len()
ax1.hist(tweet_len_1, color='green')
tweet_len_0 = tweet[tweet['target'] == 0]['text'].str.len()
ax2.hist(tweet_len_0, color='red')
- 把一个csv中的某一列(全都是字符串)映射到一个这一列的各个元素的分割后的长度的数组中
tweet_num = tweet.text.str.split().map(lambda x: len(x))
tweet_num.value_counts().plot.bar()
如果按照零一进行提取
# num of text split
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
# map num in a new list
tweet_num_1 = tweet[tweet['target'] == 1]['text'].str.split().map(lambda x: len(x))
ax1.hist(tweet_num_1, color='green')
tweet_num_0 = tweet[tweet['target'] == 0]['text'].str.split().map(lambda x: len(x))
ax2.hist(tweet_num_0, color='red')
- 把一个csv中的某一列(全都是字符串)映射到一个这一列的各个元素的分割后的字符的平均长度的数组中
word_avg_length = tweet.text.str.split.
Python - zip
应用场景:
应用方法:
通过传入参数为指针