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

应用场景:

应用方法:

通过传入参数为指针

Posted on Jan 28, 2020