Numpy 函数(1)

import numpy as np
一维数组
arr1 = np.array([1,2,3,4])

二维数组
arr2 = np.array([[1,2,3],[4,5,6]])

arr2.shape:数组结构
arr2.size:数组元素个数
arr2.dtype:数组元素类型
arr2.ndim:数组维度
重置数组类型:
arr2.shape = 3,2

numpy中自动生成数组的函数:
(1)arange(起始值,终止值,步长)
print(np.arange(0,10,1))

(2)生成等差数列:linspace(起始值,终止值,元素个数)
print(np.linspace(1,12,12))

(3)生成等比数列:logspace(10^a , 10 ^b,元素个数)
print(np.logspace(0,1,20))

(4)全0数组:
print(np.zeros((2,3)))

(5)全1数组:
print(np.ones((2,3)))

(6)单位数组:自定义的单位矩阵
print(np.eye(4))

(7)对角数组:diag 输入对角线的值,用数组形式
print(np.diag([1,2,3,4]))

生成随机数
random

(1)np.random.random 数组形式的随机数 范围在0-1之间
print(np.random.random(100))

(2)均匀分布:np.random.rand
print(np.random.rand(10,5))

(3)标准正态分布:np.random.randn
print(np.random.randn(10,5))

(4)随机整数:np.random.randint
print(np.random.randint(1,10,size=[2,5]))

数组索引
一维数组索引:类似于列表切片
arr = np.arange(10)
print(arr[2:6])
arr[3]=22 修改数组值
print(arr[0:9])
print(arr[0::2])

二维数组索引:
方法一:
arr= np.array([[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8]])
print(arr)
print(‘索引第三行第四列:’,arr[2][5])
print(arr[0,3:]) #第0行 第三列的所有值
print(arr[0:,5]) #0行开始到最后一行,第5列的值

方法二:
print(arr[(0,1,2),(1,2,3)]) #依然是 行 列 的形式 第0,1,2行的第1,2,3列的值
print(arr[0,1],arr[1,2],arr[2,3]) #取出的是值
print(arr[1:,(0,2,3)]) #位置索引 + 列数

方法三:通过bool值取值:
mask = np.array([1,1,1],dtype=np.bool)
print(mask)
print(arr[mask,3])

变换数组形态

arr = np.arange(12)#生成一维的数组
print(arr)
print(‘新数组为:’,arr.reshape(3,4))#改成二维数组
arr2 = arr.reshape(3,4)
方法一:
print(‘展平后的数组:’,arr2.ravel())#恢复成一维数组
方法二:
print(‘展平后的数组:’,arr2.flatten(‘F’))#F表示纵向展平
print(‘展平后的数组:’,arr2.flatten(‘C’))#默认为C,表示横向展平

组合:
arr3 = np.arange(12).reshape(3,4)
arr4 = 4*arr3
方法一:
print(np.hstack((arr3,arr4)))#横向合并
print(np.vstack((arr3,arr4)))#纵向合并
方法二:
print(np.concatenate((arr3,arr4),axis = 1))#axis=1 表示横坐标,横向变化;axis=0,表示纵坐标,纵向变化

数组的分割方式:
arr1 = np.arange(16).reshape(4,4)
print(arr1)
分割方法1:
print(np.hsplit(arr1,4))# 横向分割
print(np.vsplit(arr1,2))# 纵向分割
分割方法2:
print(‘横向分割后的数组为:’,np.split(arr1,2,axis=1))
print(‘纵向分割后的数组为:’,np.split(arr1,2,axis=0))

猜你喜欢

转载自blog.csdn.net/weixin_42202547/article/details/85759981