numpy模块

numpy模块:

--对numpy数值---矩阵进行科学运算
--数据分析
--tensorflow/pytorch ---张量进行科学运算
kaggle / 天池 /acm
import numpy as np
gpu -->图形显卡0---图形存储

--->numpy数组--可变
#---一维
arrl = np.array([1,2,4,6])  #[可迭代]
#二维
arr = np.array([[1,2,4],[7,8,9]])
#三维 ---》tensorflow

#属性:
T  行位互换
dtype  #数组元素的数据类型,numpy数组属于python
ndim 维数
shape 维度大小(元组)
astype 类型转换

切割数组:
print(arr[:,:]) #行,列--从零开始,不要最后的
--》有步长
赋值:
print(arr[:,:] = 0)
--》逻辑取值

--数组合并:
np.hstack((arr1,arr2))  水平
np.vstack((arr1,arr2))   垂
np.concatenate(((arr1,arr2),axis=0/1))

numpy模块:python

--是python中一种开源的数值计算扩展库。能够用来存储和处理大型numpy数组。数组

用途:
1.区别于list1列表。提供了数组操做,数组运算,及统计分布和简单的数学模型app

2.计算速度快,甚至要优于python内置的简单运算, 使得其成为pandas、sklearn等模块的依赖包。 高级的框架如TensorFlow、PyTorch等,其数组操做也和numpy很是类似。框架

为何用numpy?dom

list1 =[1,2,3]
list2 = [4,5,6]
--list1 * list2
lis_res = []
for i in range(len(list1)):
    lis_res.append(list1[i]*list2[i])
---时间复杂度: for 循环--》o(n)

建立numpy数组:
---numpy数组即numpy的ndaray对象,建立numpy数组就是把一个列表传入np.array()方法函数

import numpy as np

#建立一维数组:
arr = np.array([1,2,3])# []为可变数据类型
print(arr,type(arr))

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

#建立三维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

numpy数组的经常使用属性:spa

T     数组的转置(行位互换)--》高维
dtype 数组元素的数据类型
size  数组元素的个数
ndim  数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换

dtype 种类: bool_,int(8,16,32,64),
            float(16,32,64)
arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
print(arr)

[[1. 2. 3.]
 [4. 5. 6.]]
print(arr.T)

[[1. 4.]
 [2. 5.]
 [3. 6.]]
print(arr.shape)
(2, 3)  #二行,三列

numpy数组的行列数:code

print(arr.shape[0])
-->行
print(arr.shape[1])
-->列

切割数组:orm

--numpy数组的切割涉及到行和列的切割,可是二者切割的方式都是从索引0开始,而且取头不取尾。对象

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

#取全部元素
print(arr[:,:])
#取第一行全部元素
print(arr[:1,:])
print(arr[0, [0, 1, 2, 3]])
#取第一列全部元素
print(arr[:,:1])


#---逻辑取值,返回一个数组,
print(arr[arr>5])
--[ 6  7  8  9 10 11 12]

numpy数组按运算符取元素的原理,即经过arr > 5生成一个布尔numpy数组
print(arr > 5)

numpy数组元素替换:

--numpy数组也是一个可变类型的数据,即若是对numpy数组进行替换操做,会修改原numpy数组的元素

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)

arr1 = arr.copy()
arr1[:1,:] = 0
print(arrl)
[[ 0  0  0  0]
 [ 5  6  7  8]
 [ 9 10 11 12]]

arr2 = arr.copy()
arr[arr>5] = 0
print(arr2)

arr3[:,:] = 0

numpy数组的合并:

arr1 = np.array([[1, 2], [3, 4], [5, 6]])

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
# 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
print(np.hstack(arr1,arr2))
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]

# 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
print(np.concatenate((arr1, arr2), axis=1))

# 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
print(np.vstack((arr1, arr2)))
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]
# 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
print(np.concatenate((arr1, arr2), axis=0))

经过函数建立numpy数组:

array()    将列表转化为数组,可选择显示指定dtype
areange()   range的numpy版,支持浮点数
linspace()  相似arange(),第三参数为数组长度
zero()/ones() 根据指定形状和dtype建立全0 / 1数组  
eye()      建立单位矩阵
empty()    建立一个元素全随机数
reshape()  重塑形状
arr = np.array([1,2,3])
print(arr)

print(np.arange(10))
-[0 1 2 3 4 5 6 7 8 9]
print(np.arange(1,10,2))

--linspace / logspace
#构造一个等差数列,
print(np.linspace(0,20,5))
--[ 0.  5. 10. 15. 20.]
# 构造一个等比数列,从10**0取到10**20,取5个数
print(np.logspace(0,20,5))
--[1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]

zeros / ones / eye / empty
print(n.zero(3,4))
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

print(np,eye(3))
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

 构造一个4*4的随机numpy数组,里面的元素是随机生成的
print(np.empty((4, 4)))
[[ 2.31584178e+077 -1.49457545e-154  3.95252517e-323  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
 [ 0.00000000e+000  0.00000000e+000  1.29074055e-231  1.11687366e-308]]

#reshape--重塑形状
arr = np.ones([2,2],dtype=int)
print(arr.reshape(4,1))
[[1]
 [1]
 [1]
 [1]]

numpy数组运算:

+   两个numpy数组对应元素相加
-   两个numpy数组对应元素相减
*   两个numpy数组对应元素相乘
/   两个numpy数组对应元素相除,若是都是整数则取商
%   两个numpy数组对应元素相除后取余数
**n 单个numpy数组每一个元素都取n次方,如**2:每一个元素都取平方
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
arr2 = np.array([[7, 8], [9, 10], [11, 12]])

print(ar11+arr2)
print(arr1**2)
[[ 8 10]
 [12 14]
 [16 18]]

numpy数组的转置

---numpy数组的行和列互换

arr = np.array([[1, 2, 3], [4, 5, 6]])

print(arr.transpose) /print(arr.T)
[1 4]
 [2 5]
 [3 6]]

numpy数组的逆:

--numpy数组行和列相同时,numpy数组才可逆

arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])

print(np.linalg.inv(arr))

Numpy数组科学和统计方法:

sum 求和
cumsum  累加求和
mean    求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin  求最小值索引
argmax  求最大值索引
sort    排序
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print(arr.max())
# 获取举着每一行的最大值
print(arr.max(axis=0))
# 获取numpy数组最大元素的索引位置
print(arr.argmax(axis=1))
# 获取numpy数组每一列的平均值
print(arr.mean(axis=0))
# 获取numpy数组每一列的元素的方差
print(arr.var(axis=0))
# 对numpy数组的每一列求和
print(arr.sum(axis=0))
# 第n个元素为前n-1个元素累加和
print(arr.cumsum())

numpy.random生成随机数:

rand(d0,d1,⋯,dn)    产生均匀分布的随机数  dn为第n维数据的维度
randn(d0,d1,⋯,dn)   产生标准正态分布随机数 dn为第n维数据的维度
randint(low[, high, size, dtype])   产生随机整数  low:最小值;high:最大值;size:数据个数
random_sample([size])   在[0,1)内产生随机数    size为随机数的shape,能够为元祖或者列表
choice(a[, size])   从arr中随机选择指定数据   arr为1维数组;size为数组形状
uniform(low,high [,size])   给定形状产生随机数组  low为最小值;high为最大值,size为数组形状
shuffle(a)  与random.shuffle相同   a为指定数组
相关文章
相关标签/搜索