# 【笔记】Numpy - 数组操作
import numpy as np
# 创建数组
a = np.array([2,4,6])
# 获取数组类型和数组元素个数
type(a)
# 输出为 numpy.ndarray
a.shape
# 输出为 (3,)
# 表示a为一维数组,有3个元素
# 确定数组维数
a = a.reshape((1,-1))
#表示将a数组指定为1行,-1为占位符(即:a数组中的元素个数已知,确定了行数后,列数也就确定了,所以 -1 为占位符)
a = a.reshape((-1,1))
#表示将数组指定为1列,-1为占位符
# 修改数组中指定元素
例如创建数组m
m = np.array([2,3,7,8,9,0])
确定数组维数为2行3列
m = m.reshape((2,-1))
输出数组m的结果
array([[2, 3, 7],
[8, 9, 0]])
将 0 改为 1
m[1,2] = 1
# 创建数组的函数
zeros(m,n):创建m行n列的全零函数
a = np.zeros((3,4))
ones(m,n):创建m行n列的全1函数
a = np.ones((4,5))
full((m,n),x)函数:创建m行n列的全x函数
a = np.full((9,19),100)
eye():创建单位矩阵
a = np.eye(4)
random.random():创建一个随机数组
a = np.random.random((5,6))
# 数组索引
取出数组中的部分数值
a = np.array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
a[-2:,1:3] # 表示取出倒数第二行到最后一行,第一列到第三列的数,但不包括第三列
\# 输出结果为
array([[6,7],
[10,11]])
将数组中的某行或某列加上某个数
a[np.arange(3),2] += 2
\# 将a数组的第二列元素加上2
a[np.arrange(3),[1,2,3]] += 2
\# 将数组的第1,2,3列分别加上2
a[[0,1,2],[1,2,3]] += 2
np.arange(3)
\# 输出结果为:array([0,1,2])
获取数组中所有大于某个数的值
result_index = a > 10
result_index
\# 判断结果为:
array([[False, False, False, False],
[False, False, True, False],
[False, False, True, True]])
\# 获取结果:
[result_index]
array([11, 13, 14])
\# 简化操作
a[a>10]
array([11, 13, 14])
# 元素的数据类型
a=np.array([1,2])
a.dtype
#输出结果:dtype('int32')
创建数据类型为 int64 的数组,对于小数直接取整
a = np.array([1.2,4.6],dtype=np.int64)
# 矩阵运算
a = np.array([[1,2],
[3,4]])
b = np.array([[5,6],
[7,8])
加减乘除以及开方
a + b
\# 等价于
np.add(a,b)
a - b
\# 等价于
np.subtract(a,b)
a * b
\# 等价于
np.multiply(a,b)
a / b
\# 等价于
np.divide(a,b)
np.sqrt(a)
矩阵乘法
a.dot(b)
\# 等价于
np.dot(a,b)
# 常用函数
sum()函数:求和
a = np.array([[1,2],
[3,4]])
np.sum(a) # 求数组所有元素的和
\# 运行结果:10
np.sum(a,axis=0) # 求每列元素的和
\# 运行结果:array([4,6])
np.sum(a,axis=1) # 求每行元素的和
\# 运行结果:array([3,7])
mean()函数:求平均值,用法与sum()函数一致
np.mean(a)
np.mean(a,axis=0)
np.mean(a,axis=1)
uniform(函数):生成指定范围类的随机数
np.ramdom.uniform(4,7)
\# 运行结果:5.679353281008951
tile()函数:生成重复元素
a = np.array([[1,2],
[3,4]])
np.tile(a,(1,2)) # 将a看成一个整体,在行上重复1次,列上重复2次
\# 输出结果
array([[1, 2, 1, 2],
[3, 4, 3, 4]])
np.tile(a,(3,2)) # 将a看成一个整体,在行上重复1次,列上重复2次
\# 输出结果
array([[1, 2, 1, 2],
[3, 4, 3, 4],
[1, 2, 1, 2],
[3, 4, 3, 4],
[1, 2, 1, 2],
[3, 4, 3, 4]])
argsort()函数:对数组元素排序
a = np.array([[1,3,5,2],
[7,3,9,0]])
a.argsort() # 对每行元素从小到大排序,返回每行元素下标
\# 输出结果
array([[0, 3, 1, 2],
[3, 1, 0, 2]], dtype=int64)
a.argsort(axis=0) #对每列元素从小到大排序,返回每列元素下标
\# 输出结果
array([[0, 0, 0, 1],
[1, 1, 1, 0]], dtype=int64)
矩阵转置
a.T
\# 或者
np.transpose(a)