python——tile()函数、Counter()函数、将float型的字符串转为int型

tile()函数

(1)一维数组使用tile()

import numpy as np

# a = np.array([0, 1, 2])
# print('a: \n', a)
# 原数组a是一个一维数组,shape为(3,),是一个列向量
# 将原数组a中的元素看作一个整体按行复制2次得到新的数组(新的列向量[a, a]),shape为(6,)
# a1 = np.tile(a, 2)
# print('a1: \n', a1)
# 结果为:
a: 
 [0 1 2]
a1: 
 [0 1 2 0 1 2]
# 将原数组中的元素看作一个整体按行重复1次,按列重复2次,得到1X2维的新数组[[a, a]] 
# [[a, a]]等价于[[0, 1, 2, 0, 1, 2]]
# a2 = np.tile(a, (1, 2))
# print('a2: \n', a2)
# 结果为:
a2: 
 [[0 1 2 0 1 2]]

# 将原数组中的元素看作一个整体按行重复3次按列重复2次,得到3X2的新数组[[a,a],[a,a],[a,a]]
# a3 = np.tile(a, (3, 2))
# print('a3: \n', a3)
# 结果为:
a3: 
 [[0 1 2 0 1 2]
 [0 1 2 0 1 2]
 [0 1 2 0 1 2]]

(2)多维数组使用tile()

# 将原多维数组a中的每一行看作一个整体,然后每一行都按列重复3次得到新的数组,新数组与原数组的第一维数不变
# a = np.array([[1, 2, 3], [4, 5, 6]])
# print('a: \n', a)
# a1 = np.tile(a, 3)
# print('a1: \n', a1)
# 结果为:
a: 
 [[1 2 3]
 [4 5 6]]
a1: 
 [[1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]]
 
# 将原多维数组a中的每一行看作一个整体如看作[[a], [b]],然后每一行都先按列重复3次得到中间数组[[a, a, a],[b, b, b]]
# 然后再将中间数组中的所有元素看作一个整体如看作[c]并且按行重复3次得到[c, c, c],其中c=[a, a, a],[b, b, b]
# a2 = np.tile(a, (3, 3))
# print('a2: \n', a2)
# 结果为:
a2: 
 [[1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]
 [1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]
 [1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]]
# 原理同上
# a3 = np.tile(a, (2, 3))
# print('a3: \n', a3)
# 结果为:
a3: 
 [[1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]
 [1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]]
 
# 对于多维数组tile(a, 3)等价于tile(a, (1, 3))
# a4 = np.tile(a, (1, 3))
# print('a4: \n', a4)
# 结果为:
 [[1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]]

Counter函数

# Counter函数在collections 模块
from collections import Counter
# list = ['a', 'c', 'a', 'c', 'a', 'b']
# 快速计算一个列表中出现频率最高的几个值,此处计算频率最高的2个值
# max_fre_label = Counter(list).most_common(2)
# print(max_fre_label)
# 结果为:
[('a', 3), ('c', 2)]

# 可见Counter返回的结果为列表嵌套元组
# 下式可以直接得到列表中出现频率最高的那个值
# max_fre_label = Counter(list).most_common(2)[0][0]
# print(max_fre_label)
# 结果为:
a

将float型的字符串转为int型

(1)直接转化会出错
str = '2.3'
str_int = int(str)
print('str_int: \n', str_int)
# 结果为:
ValueError: invalid literal for int() with base 10: '2.3'
(2)先转化为float再转化为int
str = '2.3'
str_float = float(str)
str_int = int(str_float)
print('str_int: \n', str_int)
# 结果为:
2

猜你喜欢

转载自blog.csdn.net/watermelon12138/article/details/88076075