python numpy学习
2017-07-08 14:04
232 查看
创建ndarray数组:
ones、ones_like:根据指定的形状和dtype创建一个全1数组。
empty、empty_like:创建新数组,只分配内存空间但不填充任何值。
dtype:
arr = np.array([1, 2, 3, 4, 5])
float_arr = arr.astype(np.float64)#通过astype方法转换arr的dtype
print(float_arr.dtype)
arr1 = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
print(arr1)
print(arr1.astype(np.int32))
int_array = np.arange(10)
calibers = np.array([.22, .270, .357, .380, .44], dtype=np.float64)
print(int_array.astype(calibers.dtype))调用astype无论如何都会创建一个新的数组(原始数据的一份拷贝),即使新dtype跟老dtype相同也是如此。
数组和标量之间的运算:
arr = np.array([[1., 2., 3.], [4., 5., 6.]])
arr * arr
arr - arr
1 / arr
arr + arr
arr ** 0.5
基本的索引和切片:
arr = np.arange(10)
print(arr[5])#取出第六个数据
arr[5:8] = 12#将索引的三个数据赋值
print(arr)
arr_slice = arr[5:8]
arr_slice[1] = 250
print(arr)
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[0][2])
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr3d[0])
print(arr3d[1, 0])#访问索引以(1, 0)开头的那些值
切片索引:
arr2d = ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[:2])#输出0行和1行
print(arr2d[:2, 1:])#输出0行,1行和2列及3列的范围值“只有冒号”表示选取整个轴
布尔型索引:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
print(names == 'Bob')
print(data[names == 'Bob'])
print(data[names == 'Bob', 2:])
print(data[names == 'Bob', 3])
mask = (names == 'Bob') | (names == 'Will')
print(mask)
#Python关键字and和or在布尔型数组中无效
#还可以用于数组设置值
data[data < 0] = 0
print(data)
花式索引:
指的是利用整数数组进行索引。
通用函数:快速的元素级数组函数
利用数组进行数据处理
#计算函数上的sqrt(x^2 + y^2)
#meshgrid函数可以接受两个一维数组,并产生两个二维数组,对应于两个数组中所有的(x, y)对
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)
print(xs)
import matplotlib.pyplot as plt
z = np.sqrt(xs ** 2 + ys ** 2)
print(z)
plt.figure()
plt.plot(z, 'r--', linewidth=1.0, alpha=0.5)
plt.show()
#创建ndarray data1 = [6, 7.5, 8, 0, 1] arr1 = np.array(data1) data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] arr2 = np.array(data2) print(arr2.shape)#判断矩阵行列 print(arr1.dtype)#判断数据类型 print(np.ones((3, 3)))#创建3*3全是1的矩阵 print(np.arange(15))#数组版内置函数range print(np.eye(3))#创建单位矩阵
ones、ones_like:根据指定的形状和dtype创建一个全1数组。
empty、empty_like:创建新数组,只分配内存空间但不填充任何值。
dtype:
arr = np.array([1, 2, 3, 4, 5])
float_arr = arr.astype(np.float64)#通过astype方法转换arr的dtype
print(float_arr.dtype)
arr1 = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
print(arr1)
print(arr1.astype(np.int32))
int_array = np.arange(10)
calibers = np.array([.22, .270, .357, .380, .44], dtype=np.float64)
print(int_array.astype(calibers.dtype))调用astype无论如何都会创建一个新的数组(原始数据的一份拷贝),即使新dtype跟老dtype相同也是如此。
数组和标量之间的运算:
arr = np.array([[1., 2., 3.], [4., 5., 6.]])
arr * arr
arr - arr
1 / arr
arr + arr
arr ** 0.5
基本的索引和切片:
arr = np.arange(10)
print(arr[5])#取出第六个数据
arr[5:8] = 12#将索引的三个数据赋值
print(arr)
arr_slice = arr[5:8]
arr_slice[1] = 250
print(arr)
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[0][2])
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr3d[0])
print(arr3d[1, 0])#访问索引以(1, 0)开头的那些值
切片索引:
arr2d = ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[:2])#输出0行和1行
print(arr2d[:2, 1:])#输出0行,1行和2列及3列的范围值“只有冒号”表示选取整个轴
布尔型索引:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
print(names == 'Bob')
print(data[names == 'Bob'])
print(data[names == 'Bob', 2:])
print(data[names == 'Bob', 3])
mask = (names == 'Bob') | (names == 'Will')
print(mask)
#Python关键字and和or在布尔型数组中无效
#还可以用于数组设置值
data[data < 0] = 0
print(data)
花式索引:
指的是利用整数数组进行索引。
arr = np.empty((8, 4)) for i in range(8): arr[i] = i print(arr) print(arr[[4, 3, 0, 6]])#直接索引某一行,形成矩阵(传入指定顺序的整数或ndarray都可以) arr1 = np.arange(32).reshape((8, 4))#reshape方法将生产的range数列构成了一个8*4的矩阵 print(arr1) print(arr1[[1, 5, 7, 2], [0, 3, 1, 2]])#第一个数组索引矩阵的行,第二个数组索引矩阵的列 print(arr1[[1, 5, 7, 2]][:, [0, 3, 1, 2]])#第一个矩阵是索引arr1矩阵的行,然后通过第二个矩阵中的:索引所有列,通过一个数组对数据进行排序 print(arr1[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])])#np.ix_()方法可以将两个一维整数数组转换为一个用于选取方形区域的索引器
通用函数:快速的元素级数组函数
利用数组进行数据处理
#计算函数上的sqrt(x^2 + y^2)
#meshgrid函数可以接受两个一维数组,并产生两个二维数组,对应于两个数组中所有的(x, y)对
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)
print(xs)
import matplotlib.pyplot as plt
z = np.sqrt(xs ** 2 + ys ** 2)
print(z)
plt.figure()
plt.plot(z, 'r--', linewidth=1.0, alpha=0.5)
plt.show()
相关文章推荐
- python 科学计算学习一:numpy文件存取,内存映射
- python--初级学习之numpy模块的安装
- python学习笔记之numpy入门
- python numpy 学习
- 深度学习框架搭建之最新版Python及最新版numpy安装
- python学习--numpy的数组
- python科学运算库numpy,pandas学习记录
- Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy
- python学习之1 numpy常用的函数
- python 学习笔记(1)--numpy数组转置
- Python学习笔记(二)——NumPy
- Python科学计算学习一 NumPy 快速处理数据
- Python 学习之三:NumPy,SciPy,Matplotlib教程
- 【Numpy】python机器学习包Numpy基础知识学习
- 机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)
- 【学习笔记】Python+NumPy
- Python 学习之一:在Mac OS X下基于Sublime Text搭建开发平台包含numpy,scipy
- python学习--windows下安装Numpy包的错误:Unable to find vcvarsall.bat
- python numpy的学习
- python.numpy学习