《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算

前言

Numpy在运算的基础上,提供了一种简单易用的C API,因此很容易将数据传递给由低级语言编写的外部库,外部库也能用NumPy数组的形式返回给Python,这个功能让Numpy成为一个动态的,易用的库。

ndarry 一种多维数组对象

ndarry是一个同构数据多维容器,所有的元素必须是相同类型的。每一个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)

创建ndarry

1、使用array方法

import numpy as np
data1=[6,7.5,8,0,1]
arr1 = np.array(data1)
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
arr2.shape

除非显式说明,np.array会尝试给数组分配一个合适的数据类型,并将该类型分配到dtype对象中。
除了np.array之外,np.zeros和np.ones可以创建指定长度的numpy数组,empty可以创建一个不包含任意值的数组(注意,不是0),使用上述方法时,直接传入要创建的大小即可。
arange是range函数的数组版:

《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第1张图片
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第2张图片
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第3张图片
可以通过ndarry中的astype方法,显性的修改其dtype。

arr3 = np.array([1,2,3,4],dtype = 'int64')
arr3.dtype
float3 = arr3.astype('float64')
float3.dtype

基本的索引和切片

arr = np.arange(10)
arr[5]
arr[5:8]=21
arr

需要注意的事是,数组切片是原始数组的视图,这意味着数据不会被复制,视图上的任何修改都会直接反应到原数组上。
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第4张图片

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

《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第5张图片
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第6张图片

数组转置和轴对换

arr1 = np.arange(15).reshape(3,5)
arr1.T

通用函数:快速的元素级数组函数

通用函数是一种对ndarry中的元素进行运算函数,如 sqrt 和 exp

a1 = np.arange(10)
e1 = np.exp(a1)
s1 = np.sqrt(e1)

这些都是一元unfc,还有一些是基于二维的unfc,例如add和maximum

x = np.random.randn(8)
y = np.random.randn(8)
z = np.maximum(x,y)
z

《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第7张图片
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第8张图片

数学和统计方法

可以通过数组上的一组的数学函数对整个数组或某个轴向的数据进行统计运算,sum、mean、std等,这些函数既可以当数组的实例方法调用,也可以当顶级NumPy函数调用。
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第9张图片

将数组以二进制形式保存到磁盘

n1 = np.arange(1,5,0.5)
n2 = np.arange(5,10,0.5)
np.save('n1_array',n1)
l1 = np.load('n1_array.npy')
l1
np.savez('aa.npz',a=n1,b=n2)
aaa = np.load('aa.npz')
c = aaa['a']
c

随机数生成

sample = np.random.normal(size=(4,4))
sample

np.random模块可以生成各种各样的随机数,以上是利用normal函数生成标准正态分布分布。
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第10张图片
《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第11张图片

范例:随机漫步

先从一个简单的随机漫步开始,从0开始,步长1和-1的概率相等,先实现1000步的随机漫步。

import random
position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step = 1 if random.randint(0,1) else -1
    position += step
    walk.append(position)

《利用Python进行数据分析》学习笔记 NumPy基础:数组和矢量运算_第12张图片

你可能感兴趣的:(教材&算法学习)