Numpy 的基本使用

"""
numpy 的基本使用
"""
import numpy as np


# 可以调用np.arry去从list初始化一个数组,类型:class 'numpy.ndarray',ndarray = n dimensional array
a = np.array([1, 2, 3])

# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])

# 查询行,列数:(2, 3), 2行,3列
b.shape

# 一些内置的创建数组函数
a = np.zeros((2, 3)) # 2行3列的数组,值都为0
a = np.ones((2, 3)) # 2行3列的数组,值都为1

# 自定义值的数组
a = np.full((2, 3), 8) # 2行3列的数组,值都为8

# 自定义对角线值的数组
a = np.eye(3) # 3行3列的数组,对角数值为1

# 生成随机数的数组
e = np.random.random((2, 3)) # 2行3列的随机数
f = np.empty((2, 3, 4)) # 2个3行4列的随机数的数组

# 指定数组值的类型
a = np.array([1, 2, 3, 4], dtype=np.int64)

# 使用astype将float转换为int时,小数部分被舍弃掉
float_arr = np.array([1.3, 2.4, 5.8, -1.32])
int_arr = float_arr.astype(np.int)

# 像list一样的切片
a = e[0:2, 0:2] # 取第1和第2行的,第1和第2列

# 加法
a = np.array([[1, 2, 4], [3, 5, 2], [8, 4, 2]])

# 高级取法 并 加 10,给取的值都加上了10
a[np.arange(3), [0, 1, 0]] += 10

# 数组中的值判断, 直接的数据判断
b = (a > 2)

# 取为true的值
a[b]

x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)
# print(x)
# print(y)
# [[1. 2.]
# [3. 4.]]
# [[5. 6.]
# [7. 8.]]

# -------逐元素求和,有下面2种方式, 加减乖除类似,
# 方法:加--np.add, 减--np.subtract, 乘--np.multiply, 除--np.divide, 平方根--np.sqrt

# 1. 直接
x + y
# print(x + y)
# [[ 6. 8.]
# [10. 12.]]

# 2.np方法
np.add(x, y)
# print(np.add(x, y))

# 矩阵的运算
# 矩阵乘法, x 乘 y
x.dot(y)
np.dot(x, y)

# 矩阵转置
x.T
x = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
x.transpose(2, 1, 0)
# print(np.sum(x, axis=2))

# 矩阵的条件判断与赋值, x大于4,True的话=1,Flase的话=-1
t = np.where(x > 4, 1, -1)

# ---- 创造矩阵
arr = np.arange(18)

# 6为行数,-1会自动补全,但行数必须是个数能整除的数
arr.reshape(6, -1)
arr.reshape(-1, 6)

# ------- 两个矩阵连接起来
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])

# 垂直把两个矩阵结合
c = np.vstack((a, b))

# 水平把两个矩阵结合
c = np.hstack((a, b))

# 切割数组
# np.split()

# ------ 保存数组成文件,并读取
# np.save('temp', a)

# 读取
# np.load('temp.npy')

# 保存多个数组
# np.savez('temp', a=a, b=b)

 

你可能感兴趣的:(Python)