# -*- coding:utf-8 -*-
import numpy as np
t1 = np.arange(6).reshape(2, 3)
t2 = np.arange(10, 16).reshape(2, 3)
# 竖直拼接,vertically 相当于union all
# print(np.vstack((t1, t2)))
# 水平拼接 horizontally
# print(np.hstack((t1, t2)))
print("*" * 10)
# 构建全为0的数组
z = np.zeros((t1.shape[0], 1), dtype="int")
t1 = np.hstack((z, t1))
# 构建全为1的数组
o = np.ones((t2.shape[0], 1)).astype(np.int)
t2 = np.hstack((o, t2))
print(np.vstack((t1, t2)))
print("*" * 50)
t1[0, 0] = 7
t1[0, 2] = 6
print(t1)
# 第一列最大值是7,返回位置0
# 第二列最大值是3,返回位置1....其余同理
print(np.argmax(t1, axis=0)) # [0 1 0 1]
print(np.argmax(t1)) # 返回一维数组中最大值的位置
print("*" * 50)
# 常用判断
print(np.nan == np.nan) # False
print(np.inf == np.inf) # True
t1 = t1.astype("float")
t1[1, 1] = np.nan
t1[1, 2] = np.inf
print(t1)
# 获取非0个数,包括nan,inf
print(np.count_nonzero(t1))
# 获取nan个数 方法1
print(np.count_nonzero(t1 != t1))
# 获取nan个数 方法2
print(np.count_nonzero(np.isnan(t1)))
# 求和 有nan的话返回nan,有inf的话返回inf
print(np.sum(t1))
t1[1, 1] = 3
print(t1)
print(np.sum(t1)) # info
print(np.sum(t1, axis=0)) # [ 7. 3. inf 7.]
print(np.max(t1, axis=0))
# 极值=最大值-最小值
print(np.ptp(t1, axis=0))
t1 = np.arange(10).reshape((2, 5)).astype(np.float)
print(t1)
t2 = t1[:, 1]
# 注意:此处修改的t2,会影响t1
t2[1] = -1
print(t1)