Numpy

class_5_(1)NumPy入门

2019-01-31  本文已影响1人  AlexLJS

(个人笔记,仅仅介绍入门操作,详细操作见后续)

一、NumPy

提升科学计算效率的包。此处略过安装,安装了anaconda 就不用pip install。
from numpy import *
import numpy as np
主要功能: 处理数组运算,支持高维数组。Python 中也存在如list/array的数据结构,调用numpy的数组,在求和以及其他运算上效率更高。
Ndarray对象:Numpy中用于存放N维数组的对象,指向内存中连续区域。可以用array()方法创建。


1、数组创建:array() arange()

py数组转化:

import numpy as np

data = [1,2,3]
ary_1 = np.array(data)
ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])

print(ary_1)
print(ary_1.dtype)
print(ary_2)
print(ary_2.dtype)

注:
支持不规范数组创建。
Numpy中数据类型超过python。可以用astype(数据类型)指定数组对象的数据类型。

批量创建:
arange(10):创建array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arange(1,5): array([1, 2, 3, 4])
arange(1,6,2):创建1-6步长为2,array([1, 3, 5])

zeros():创建初始元素为0数组
empty():创建空数组

print(np.arange(10))
print(np.arange(1,5))
print(np.arange(1,6,2))
print(np.zeros((3,6)))#生成3行6列二维数组
print(np.empty((2,3,2)))

注:注意区分范围与维度。
转化py现有数据结构:asarray() 用法类似array() ,可以将元组和元组列表转化为ndarray对象。

2、数组切片与索引

传统数组切片 : 左闭右开
ary_3 = np.arange(10)
print(ary_3[3:6])

高维数组切割:

ary_2 = np.array([[1.1,2,3.2],[4,5.0,6]])
print(ary_2[0])
print(ary_2[0,1])
print(ary_2[...,1])#2列
print(ary_2[0,...])#2行

注:copy()复制值到另一个变量。不把值copy下来python视为引用,数据联动。
value = aray_2[0].copy()

slice():

a = arange(10)
s = slice(2,5)
a[s]
Out:array([2, 3, 4])

b = arange(1,20,2)
print(b[1:3])
Out:[3 5]

reshape(row,col):将数组重构,例如将一维数组改成二维数组

c = arange(12).reshape(3,4)
c[1,3] #取第二行第三列元素
c[1,...]#取第二行,使用代替符 ...

总结索引 :即筛选数组中元素。
布尔索引:传入布尔表达式,如c[c>6] 查找大于6元素。
整数索引:用整数下标索引,传入负数则从后往前索引。
花式索引:利用整数数组进行索引,就是上文提到的reshape。

3、随机数创建

random.rand() #生成0~1随机数
random.rand(1)#生成seed为1随机数

random.rand(3,2).reshape(2,3) #种子 3 2 ,2行3列随机数组

random.randint() # 生成整数

随机选择内容:random.choice(list)
可以传入list 可以随机生成对应的随机矩阵.
注:
random.seed(int) 设置种子

4、数组运算

numpy可以对数组进行加减乘除运算, 免去了写循环。

ary_4 = np.arange(12).reshape(3,4)
print(ary_4)
print(ary_4*2)
print(ary_4+3)

注:numpy内置了许多数学函数,abs、sqrt、log、exp…

转置:transpose()
print(ary_4.transpose())

ary_4 = np.arange(12).reshape(3,4)
print(ary_4)
print(ary_4*2)
print(ary_4+3)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[[ 0  2  4  6]
 [ 8 10 12 14]
 [16 18 20 22]]
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]

print(ary_4.transpose())
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
上一篇下一篇

猜你喜欢

热点阅读