Numpy基础

引子

"""
Numpy提供数组和矢量运算
ndarray:可以存储单一数据类型的多维数组
ufunc:对数组进行处理的函数
用于读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数,随机数生成傅里叶变换的工具
"""
import numpy as np
data=np.array([[0.9526,-0.246,-0.8856],[0.5639,0.2379,0.9104]])
print(data*10)
#ndarray是一个通用的数据多维容器,即所有的数据元素必须是相同的元素
#使用shape函数可以查看数组各维度的大小
print(data.shape)
#应用dtype查看数据类型
print(data.dtype)

创建ndarray数组

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 27 11:05:25 2019

@author: gao
"""

#创建ndarray
#使用narray函数
import numpy as np
data1=[6,7,8,0,1]#创建列表
arr1=np.array(data1)
print(arr1)
#使用嵌套序列创建多维数组
data2=[[1,2,3,4],[5,6,7,8]]
arr2=np.array(data2)
print(arr2)
#array函数会在创建数组时推断出一个比较合适的数据类型。并保存在dtype对象中,也可以显示指定
print("arr1:{0} arr2:{1}".format(arr1.dtype,arr2.dtype))
#使用函数创建数组 zeros()和ones()
print(np.zeros(10))
print(np.zeros((3,6)))
print(np.empty((2,2)))

numpy数据类型~~~dtype

import numpy as np
arr1=np.array([1,2,3,4],dtype=np.float64)
print(arr1)

import numpy as np
arr1=np.array([1,2,3,4],dtype=np.float64)
print(arr1)
print(arr1.dtype)
#使用astype函数显式更改dtype
a=arr1.astype(np.int32)
print(a)
print(a.dtype)
print(arr1)
#其中arr1类型并没有改变,只是更改了a的

数组的切片是原始数据的视图,不会复制数据,在视图上更改任何数据就会影响源数据

数组和标量之间的运算

import numpy as np
arr=np.array([[1,2,3],[4,5,6]])
print(arr)
print(arr*arr)
print(arr**0.5)
print(1/arr)

索引和切片

import numpy as np
arr=np.arange(10)
print(arr)
#索引,数组元素的索引从0开始
print(arr[5])
#切片
print(arr[5:8])
arr[5:8]=12
print(arr)
#更改视图源数据也会改变
#二维数组中索引位置上的元素不再是标量而是一维数组
#同理三维数组中索引位置上是二维数组
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr1)
print(arr1[0])
print(arr1[0][0])
#上语句的等价语句
print(arr1[0,0])
#切片索引
#通过切片访问元素,通常返回一个数组
#布尔型索引
#花式索引

通用函数ufunc

通用函数是一种对ndarray中的数据执行元素级运算的函数。

 利用数组进行数据处理

使用函数meshgrid()接受两个一维数组,并产生两个二维矩阵

import numpy as np
import matplotlib.pyplot as pl
x=np.arange(0,1,0.1)
y=np.arange(0,1,0.1)
xs,ys=np.meshgrid(x,y)
z=xs**2+ys**2
print(z)
pl.imshow(z,cmap=pl.cm.gray)

将条件逻辑表述为数组

numpy.where函数是一个三元表达式 x if condition else y 的矢量化版本。

import numpy as np
x=np.array([1.1,1.2,1.3,1.4,1.5])
y=np.array([2.1,2.2,2.3,2.4,2.5])
cond=np.array([True,False,True,True,False])
print(np.where(cond,x,y))

数学和统计方法

用于数据的文件输入和输出

以二进制格式保存到磁盘

np.save

np.load

np.savez

存取文本文件

np.loadtxt('',delimiter=',')

线性代数

 

 随机数的生成

 可以使用python内置模块random中normal产生一个标准正态分布的数组

 

原文地址:https://www.cnblogs.com/gaochunhui/p/11700633.html