python-numpy 的使用

当考虑了方向,即axis=1为横向,axis=0为纵向,而不是行和列,那么所有的例子就都统一了。

1.numpy 的安装

我们在安装了python后,使用如下命令,来安装numpy模块

pip install numpy 

2.numpy中数据的基本属性

numpy的数据格式有以下三个属性:

  • ndim:维度
  • shape:行数和列数
  • size:元素个数
array1=np.array([1,2,3,4])       # 1维数组
array2=np.array([[1,2,3,4]])     # 2维数组
print(array1.shape)
print(array2.shape)
print(array1.ndim)
print(array2.ndim)

# 输出
(4,)
(1, 4)
1
2

从上述代码我们可以看出,np.array()函数里有一个中括号时,表示的是一维数组;np.array()函数里有两个中括号时,表示的是一个二维数组;

3.在numpy中创建数组array np.array()

#list列表转化为矩阵注意有两个中括号[],指定数据类型
array = np.array([[1,2,3],[2,3,4]],dtype=int)  
print('number of dim:',array.ndim)  # 维度
# number of dim: 2
print('shape :',array.shape)    # 行数和列数
# shape : (2, 3)
print('size:',array.size)   # 元素个数
# size: 6
a=np.arange(1,20,2) #1-19的数据,2步长,这时的a的维度是1
a=np.arange(12).reshape((3,4))  #三行四列 ,0-11数据注意有两个中括号[]

4.numpy中的矩阵运算

(1) 矩阵的基本运算

例如A和B为两个相同行数和列数大小的矩阵,
C=A+B
C=A-B
C=A*B
Numpy中的矩阵乘法分为两种,
其一是矩阵中对应元素相乘,
其二是标准的矩阵乘法运算,即对应行乘对应列得到相应元素:

C=A*B
C_dot=np.dot(A,B)  #点乘
C=A.dot(B)

a=np.random.random((2,4))
np.sum(a)   # 4.4043622002745959
np.min(a)   # 0.23651223533671784
np.max(a)   # 0.90438450240606416

- 注意:

当axis=1,以横向 行作为查找单元;
当axis=0,以纵向 列为查找单元 np.sum(a,axis=0)

(2) array的分割np.split()和合并np.concatenate()

只有当矩阵的行数和列数相等的时候,才可以进行矩阵的拼接

A=np.array([[1,2,3]])    # shape=(1,3)
B=np.array([[4,5]])       # shape=(1,2)
C=np.concatenate([A,B],axis=1)
print(C)
print(C.shape)

# 输出:
[[1 2 3 4 5]]
(1, 5)

当axis=1,以横向 行作为查找单元;np.concatenate([A,B],axis=1)
当axis=0,以纵向 列为查找单元

A=np.arange(1,13).reshape((3,4))
print(A)
print(np.split(A, 2, axis=1))  #纵向分割
print(np.split(A, 3, axis=0))  #横向分割
print
print(np.vsplit(A,3))
print(np.hsplit(A,2))
(3)求矩阵中最小元素和最大元素的索引:argmin() 和 argmax()
print(np.mean(a))
print(a.mean(axis=1))  #计算行的平均值
print(a.median())
print(np.cumsum(A))  #累加元素
print(np.diff(A)) #累差元素
print(np.transpose(A))    
print(A.T)
clip(Array,Array_min,Array_max)

clip(Array,Array_min,Array_max)顾名思义,Array指的是将要被执行用的矩阵,而后面的最小值最大值则用于让函数判断矩阵中元素是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值。

4.矩阵索引

一维索引跟list相同
二维索引 A[1,1:3] 第二行中第2到4列元素切片

5.矩阵的打印输出
#按行打印   
for row in A: 
	print(column)
#按列打印   
for column in A.T:
	print(column)
A.flatten()  #将A展开成一行的
for item in a.flat:  #逐个元素打印
    print(item)
6.numpy的深拷贝deep copy与浅拷贝
b=a.copy()  # b的值不随a改变,深拷贝
b=a         # b的值随a改变,浅拷贝
print(C is A)
print(D is A)
7. 峰值检测函数:

方法一:判断当前位置的前后数据是否符合波峰和波谷

peaksOfAcclerate=[]
troughsOfAcclerate=[]
for idx in range(1,lengthOfFile-1): #可接受1维和2维的输入数据
        if acclerateOfSensor[idx-1] < acclerateOfSensor[idx] and acclerateOfSensor[idx] >acclerateOfSensor[idx+1]:
            peaksOfAcclerate.append((idx,acclerateOfSensor[idx]))
        if acclerateOfSensor[idx-1] > acclerateOfSensor[idx] and acclerateOfSensor[idx] <acclerateOfSensor[idx+1]:
            troughsOfAcclerate.append((idx,acclerateOfSensor[idx]))

方法二:

    #np.where 方法适合输入数据为一维数组 shape=(n,)
    peak_location=np.where(np.diff(np.sign(np.diff(acclerateOfSensor)))==-2)[0]+1
    trough_location=np.where(np.diff(np.sign(np.diff(acclerateOfSensor)))==2)[0]+1
    print(len(peak_location))
    print(len(trough_location))

numpy.diff(a, n=1,axis=-1) 函数: 沿着指定轴计算第N维的离散差值
参数:

  • a:输入矩阵
  • n:可选,代表要执行几次差值
  • axis:默认是最后一个

numpy.sign()函数: 取某个数的符号。
在这里插入图片描述
numpy.where(X==1)函数: 查找矩阵中特定元素的下标索引

返回值 C=numpy.where(X==1)的类型为tuple

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值