python Numpy

Numpy入门

1.什么是numpy

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础

功能:

  • ndarray 一个强大的N维数组对象
  • 复杂(广播)功能
  • 用于集成C / C ++和Fortran代码的工具
  • 有用的线性代数,傅里叶变换和随机数能力

安装使用方法:

pip install numpy
import numpy as np

备注:

  在使用numpy进行科学计算时,可以安装scipy堆栈,例如Anaconda 具体安装的模块标准参考这里

2.numpy基础

numpy的主要对象是均匀的多维数组,数组内的各个元素类型相同。多维数组的类型为numpy.ndarray

先来介绍下ndarray对象都有哪些属性:

  • ndarray.ndim : 数组的轴数(维数)。在Python世界中,维度的数量被称为等级。
  • ndarray.shape : 阵列的尺寸。这是一个整数元组,指示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将是(n,m)。shape因此,元组的长度 是等级或维数 ndim。
  • ndarray.size : 数组的元素总数。这等于元素的乘积shape。
  • ndarray.dtype : 描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。另外NumPy提供自己的类型。例如:numpy.int32,numpy.int16和numpy.float64。
  • ndarray.itemsize : 数组的每个元素的大小(以字节为单位)。例如,类型的元素数组float64具有itemsize8(= 64/8),而其中一个元素complex32具有itemsize4(= 32/8)。相当于ndarray.dtype.itemsize。
  • ndarray.data : 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引设施访问数组中的元素。

数组几种创建方法:

  1.使用array函数从常规python列表或元祖创建数组,结果数组的类型从序列中的元素类型推导出来

>>>a = np.array([1,2,3,4,5])
>>>a.dtype
dtype('int32')
>>>a = np.array([1.0,2.0,3.0,4.0,5.0])
>>>a.dtype
dtype('float64')
# 创建一个二维数组
b = np.array([[1.4,2.,3.],[5.,6.,7.]])
# 创建时也可以指定数组类型(复数类型)
b = np.array([[1,2],[3,4]],dtype=complex)

通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。这些最小化生长阵列的必要性,这是昂贵的操作。
该函数zeros创建一个充满零的数组,该函数 ones创建一个包含一个数组的数组,该函数empty 创建一个数组,其初始内容是随机的,并且取决于内存的状态。默认情况下,创建的数组的dtype为 float64。

为了创建数字序列,NumPy提供了类似于range的函数返回数组而不是列表。

>>>np.arange(10,20,2)
array([10, 12, 14, 16, 18])

>>>np.arange(10,20,2.5)     # 三个参数分别为起始,结束,步长,这里步长可以接受float参数
array([ 10. ,  12.5,  15. ,  17.5])

当arange与浮点参数一起使用时,由于有限的浮点精度,通常不可能预测获得的元素的数量。因此,通常最好使用linspace接收作为参数的函数的函数,而不是步长:

>>>np.linspace(0,2,9)
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])

>>>from numpy import pi
>>> x = np.linspace(0,2*pi,100)

也可以看看 :

array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, numpy.random.rand, numpy.random.randn, fromfunctionfromfile

打印数组:

数据的打印会以很友好的方式显示出来,但在这里说明一点,如果数组太大而无法打印,numpy会自动跳过阵列的中央部分,可以更改打印选项来进行设置

 

np.set_printoptions(threshold=nan)     # 打印全部 默认为1000
np.set_printoptions(precision=3)        # 设置精度

 

基本操作:

>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False], dtype=bool)

与许多矩阵语言不同,*在NumPy数组中运行元素。可以使用该dot功能或方法按照矩阵乘法的规则来运算的:

>>> A = np.array( [[1,1],
...             [0,1]] )
>>> B = np.array( [[2,0],
...             [3,4]] )
>>> A*B                         # elementwise product
array([[2, 0],
       [0, 4]])
>>> A.dot(B)                    # matrix product
array([[5, 4],
       [3, 4]])
>>> np.dot(A, B)                # another matrix product
array([[5, 4],
       [3, 4]])

https://docs.scipy.org/doc/numpy/user/quickstart.html#quickstart-shape-manipulation

 

待续:

 

待续:

待续:

待续:

 

 

posted @ 2017-09-05 20:28  40块钱抓娃娃  阅读(214)  评论(0编辑  收藏  举报