numpy其他函数

numpy其他函数

import numpy as np

# 数组拼接
t1 = np.arange(12).reshape((2, 6))
t2 = np.arange(12, 24).reshape((2, 6))
print(t1)
print(t2)

print("*"*50)
print(np.vstack((t1, t2)))

print("*"*50)
print(np.hstack((t1, t2)))
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
[[12 13 14 15 16 17]
 [18 19 20 21 22 23]]
**************************************************
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
**************************************************
[[ 0  1  2  3  4  5 12 13 14 15 16 17]
 [ 6  7  8  9 10 11 18 19 20 21 22 23]]
# 交换数组的行和列
t = np.arange(12, 24).reshape((3, 4))
print(t)
print("*"*50)

# 交换行
t[[1, 2], :] = t[[2, 1], :]
print(t)
print("*"*50)

# 交换列
t[:, [0, 2]] = t[:, [2, 0]]
print(t)
print("*"*50)
[[12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]]
**************************************************
[[12 13 14 15]
 [20 21 22 23]
 [16 17 18 19]]
**************************************************
[[14 13 12 15]
 [22 21 20 23]
 [18 17 16 19]]
**************************************************

现在希望把之前案例中两个国家的数据方法一起来研究分析,同时保留国家的信息(每条数据的国家来源)。

us_file_path = "./youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "./youtube_video_data/GB_video_data_numbers.csv"

us_data = np.loadtxt(us_file_path, dtype="int", delimiter=",")
uk_data = np.loadtxt(uk_file_path, dtype="int", delimiter=",")

# 可以在最左边添加一列, 为0代表美国, 为1代表英国
zeros_data = np.zeros((us_data.shape[0], 1)).astype("int")
ones_data = np.ones((uk_data.shape[0], 1)).astype("int")

us_data = np.hstack((zeros_data, us_data))
uk_data = np.hstack((ones_data, uk_data))

# 拼接两组数据
final_data = np.vstack((us_data, uk_data))
print(final_data)
[[      0 4394029  320053    5931   46245]
 [      0 7860119  185853   26679       0]
 [      0 5845909  576597   39774  170708]
 ...
 [      1  109222    4840      35     212]
 [      1  626223   22962     532    1559]
 [      1   99228    1699      23     135]]
# 获取最大值和最小值的位置
t = np.arange(12).reshape((3, 4))
print(t)

# axis=0表示纵向列
print(np.argmax(t, axis=0))
# axis=1表示横向行
print(np.argmax(t, axis=1))
print(np.argmin(t, axis=1))

# 创建一个全0或全1的数组
t1 = np.zeros((3, 4))
t2 = np.ones((3,4))
print("*"*50)
print(t1)
print(t2)

# 创建一个n维单位矩阵
t3 = np.eye(3)
print("*"*50)
print(t3)

# 查看每行最大的值的位置
print(np.argmax(t3, axis=1))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[2 2 2 2]
[3 3 3]
[0 0 0]
**************************************************
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
**************************************************
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
[0 1 2]
# 均匀分布, 在相同的大小范围内的出现概率是相等的
# 正态分布, 呈钟型,两头低,中间高,左右对称

# rand(d0, d1, ..., dn)
# 产生一个给定形状的数组,数组中的数值符合[0, 1)的均匀分布
print("rand")
a = np.random.rand(2, 3)
print(a)
print("*"*50)

# randn(d0, d1, ..., dn)
# 产生一个给定形状的数组,数组中的数值符合标准正态分布(均值0,方差1)
print("randn")
b = np.random.randn(2, 3)
print(b)
print("*"*50)

# randint(low, high, shape)
# 生成一个给定形状的数组,数组中的数值是从low(包含)到high(不包含)的随机整数
print("randint")
c = np.random.randint(10, 50, (2, 3))
print(c)
print("*"*50)

# uniform(low, high, size)
# 产生一个数组,数组中的数值符合[low, high)的均匀分布
print("uniform")
d = np.random.uniform(1., 2., (2, 3))
print(d)
print("*"*50)

# normal(loc, scale, size)
# 产生一个数组,数组中的数值符合以loc为均值,scale为标准差的正态分布
print("normal")
e = np.random.normal(0, 1, (2, 3))
print(e)
print("*"*50)

# seed(s)
# 设定随机数生成的种子。使用相同的种子将会产生相同的随机数序列,这对于需要可重复结果的实验非常有用
print("no seed")
a = np.random.rand(2, 3)
print(a)
a = np.random.rand(2, 3)
print(a)
print("*"*50)

print("seed")
np.random.seed(0)
a = np.random.rand(2, 3)
print(a)
np.random.seed(0)
a = np.random.rand(2, 3)
print(a)
rand
[[0.56804456 0.92559664 0.07103606]
 [0.0871293  0.0202184  0.83261985]]
**************************************************
randn
[[ 0.44386323  0.33367433  1.49407907]
 [-0.20515826  0.3130677  -0.85409574]]
**************************************************
randint
[[19 42 41]
 [20 33 45]]
**************************************************
uniform
[[1.18633234 1.73691818 1.21655035]
 [1.13521817 1.32414101 1.14967487]]
**************************************************
normal
[[-0.5409163  -1.32322737 -0.11279892]
 [ 0.90734594  0.81526991  0.22909795]]
**************************************************
no seed
[[0.09928035 0.96980907 0.65314004]
 [0.17090959 0.35815217 0.75068614]]
[[0.60783067 0.32504723 0.03842543]
 [0.63427406 0.95894927 0.65279032]]
**************************************************
seed
[[0.5488135  0.71518937 0.60276338]
 [0.54488318 0.4236548  0.64589411]]
[[0.5488135  0.71518937 0.60276338]
 [0.54488318 0.4236548  0.64589411]]
# 复制与赋值

# a=b 完全不复制, a和b相互影响
# 更改a会影响b, 更改b也会影响a
b = np.arange(6)
a = b
print(a, b, sep='\n')
a[2] = 9
print(a, b, sep='\n')
b[0] = -1
print(a, b, sep='\n')

print("*"*50)
# a = b[:]是视图的操作, 是一种切片, 会创建新的对象a, 但是a的数据完全由b保管, 他们两个的数据变化是一致的
b = np.arange(6)
a = b[:]
print(a, b, sep='\n')
a[2] = 9
print(a, b, sep='\n')
b[0] = -1
print(a, b, sep='\n')

print("*"*50)
# a = b.copy() 是复制, a和b互不影响
b = np.arange(6)
a = b.copy()
print(a, b, sep='\n')
a[2] = 9
print(a, b, sep='\n')
b[0] = -1
print(a, b, sep='\n')
[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 9 3 4 5]
[0 1 9 3 4 5]
[-1  1  9  3  4  5]
[-1  1  9  3  4  5]
**************************************************
[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 9 3 4 5]
[0 1 9 3 4 5]
[-1  1  9  3  4  5]
[-1  1  9  3  4  5]
**************************************************
[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 9 3 4 5]
[0 1 2 3 4 5]
[0 1 9 3 4 5]
[-1  1  2  3  4  5]
posted @ 2024-03-05 16:55  钰见梵星  阅读(6)  评论(0编辑  收藏  举报