numpy常用小知识

  • 1.array基本信息查看及操作
  • 查看array元素内容、类型、维度
  • 常见的array格式:零矩阵、一矩阵、空矩阵
  • 2.array之间的计算
  • 加减法
  • 乘除法
  • 随机数,按行或列求最大最小值
  • sort、转置
  • 3. 索引和拼接
  • 取值,取行或列,降维
  • 数组拼接


1.array基本信息查看及操作

写在前面:命名py文件时,不要使用python自带的包命名,会出现AttributeError:module ‘numpy’ has no attribute ‘array’。

查看array元素内容、类型、维度

import numpy as np
array = np.array([[1, 2, 3],
                  [2, 3, 4]])
print(array)  # 查看array
print(array.dtype)  # 每个元素的类型
print("number of dim", array.ndim)  # array的维度,两行三列
print('shape:',array.shape)  # 形状
print('size:',array.size)  # array的大小=array中所有元素的格式

python查看数据框维度的大小_数组

常见的array格式:零矩阵、一矩阵、空矩阵

# 常见的array格式
a1 = np.zeros((2, 3), dtype=np.int) # 生成全为0的array
a2 = np.ones((2, 3), dtype=np.int16) # 生成全为1的array
a3 = np.empty((2, 3)) # 生成全为接近空的array
a4 = np.arange(10, 20, 2) # 生成array 10到20 步长为2,即10,12,14,16,18
a5 = np.arange(12)  # 生成0到11
a6 = np.arange(12).reshape((3,4)) # reshape重新定域矩阵形状
a7 = np.linspace(1, 10, 4).reshape((2, 2))  # 将1到10之间,步长为4-1=3,即1,4,7,10,重新定义为2*2矩阵

2.array之间的计算

加减法

# array之间的计算
a = np.array([10, 20, 30, 40])  # 相同维度
b = np.arange(4)
c1 = a+b
c2 = a-b
aa = np.array([[1, 2, 3, 4],  # 不同维度,把维度低的array自动扩大到大维度的array
              [11, 22, 33, 44]])
bb = np.arange(4)
cc = aa+bb #  结果为 [[1 3 5 7] [11 23 35 47]]

乘除法

d = np.array([[1, 2],
              [3, 4]])
e = np.arange(1, 8, 2).reshape((2, 2))  # [[1 3] [5 7]]
print("d*e:", d*e)  # 对应元素相乘
print("d/e:", d/e)  # 对应元素相除
print("d e 矩阵相乘:", d.dot(e))  # 矩阵相乘 等价于np.dot(d,e)

python查看数据框维度的大小_随机数_02

随机数,按行或列求最大最小值

f = np.random.random((2,4))  # 随机产生shape为(2,4)的一个array,每个元素都在0-1之间
print(np.sum(f))  #求和
print(np.min(f))
print(np.max(f))
print(np.sum(f, axis=0))  # 按列执行,从上往下走
print(np.min(f, axis=1))  # 按行执行,从左往右走
print(np.max(f, axis=0))

python查看数据框维度的大小_转置_03

此处axis=0,axis=1用图解释如下:

python查看数据框维度的大小_转置_04

sort、转置

c = np.arange(14, 2, -1).reshape((3,4))
print("sort:", np.sort(c))  # 每一行进行从小到大的排序
print("c的转置:", np.transpose(c))  # 对矩阵进行转置,等价于c.T,行向量用np.newaxis进行转换
print("clip:", np.clip(c, 5, 9))  # c矩阵中小于5的元素等于5,大于9的等于9

python查看数据框维度的大小_随机数_05

3. 索引和拼接

取值,取行或列,降维

a = np.arange(3, 15).reshape((3,4))
print(a)
print(a[1])  # 索引为1的行,等价于a[:][1]
print(a[2, 1])  # 与数组类似
print(a[:, 1])  # 索引为1的列,生成行向量
print(a[:,1:2])  # 索引为1的列,生成列向量
print(a[:, 1:3])  # 索引为1到2 的列,生成列向量
print(a.flatten())  # 所有元素变为一维

python查看数据框维度的大小_python查看数据框维度的大小_06

数组拼接

a = np.array([1, 1, 2])
b = np.array([2, 3, 4])
c = np.vstack((a,b))  # vertical 垂直方向b接在a后面
d = np.hstack((a,b))  # horizontal 水平方向b接在a后面

a = np.array([1, 1, 2])[:, np.newaxis]
b = np.array([2, 3, 4])[:, np.newaxis]
e = np.concatenate((a, b, b), axis=0)  # 多向量融合
f = np.concatenate((a, b, b), axis=1)

python查看数据框维度的大小_数组_07