numpy使用教程之数组的创建与遍历

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

·常见的数据类型

  bool_ 一个字节的布尔值

 int_  默认的整数

int8  字节-128-127 ; int16,int32, int64  对应的整数

float_ float64的简写, float16  float32  float64

complex_  

·创建n维数组  numpy.array()函数的使用

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

           

序号 参数及描述
1. object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2. dtype 数组的所需数据类型,可选。
3. copy 可选,默认为true,对象是否被复制。
4. order C(按行)、F(按列)或A(任意,默认)。
5. subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
6. ndimin 指定返回数组的最小维数。

数组的属性

   numpy.shape : 返回一个包含数组元素的元组,也可以调整数组的排列形式

  import numpy as np
  a = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]])
  print a.shape #(2,3)
  a.shape=( 3 , 2 )
print a  ##[[1,2],[3,4],[5,6]]

    numpy.reshape()  功能与属性shape相似,但一个为方法,一个为属性

a.reshape(3,2)

  numpy.ndim 返回数组的维数 

数组的创建

  np.arange(start,stop,step,dtype='')  返回等间隔数字的函数

a= np.arange(2,10,2,dtype='flaot')
print a  # [2.,4.,6.,8.]
np.linspace(start,stop,num,endpoint,restep,dtype)  
1. start序列的起始值
2. stop序列的终止值,如果endpointtrue,该值包含于序列中
3. num 要生成的等间隔样例数量,默认为50
4. endpoint序列中是否包含stop值,默认为ture
5. retstep如果true,返回样例,以及连续数字之间的步长
6. dtype输出ndarray的数据类型
其他函数np.zeros(shapge) np.ones(shapge) np.empty(shape) 相当于matlab中的函数,

切片和索引(用户遍历数组中的元素)

      切片(slice对象)通过将start,stop和step参数提供给内置的slice函数来构造一个 Python slice对象

a= np.arange(0,10,1,dtype='float')

s=slice(2,5,1)  # 函数而非对象

print a[s] #[2 3 4]

     上述代码等价于:

import numpy as np
a = np.arange(10)
b = a[2:7:2]  
print b

获取单个元素: a[5] 

获取第2个及之后的元素:a[2:]

获取第2个至第5个元素:a[2:5]

获取数组的逆序:a[::-1]

·切片还可以包括省略号(...),来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含  行中元素的ndarray

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我们的数组是:'  
print a
print  '\n'  
# 这会返回第二列元素的数组:  
print  '第二列的元素是:'  
print a[...,1]  
print  '\n'  
# 现在我们从第二行切片所有元素:  
print  '第二行的元素是:'  
print a[1,...]  
print  '\n'  
# 现在我们从第二列向后切片所有元素:
print  '第二列及其剩余元素是:'  
print a[...,1:]

高级索引

     高级索引始终返回数据的副本。 与此相反,切片只提供了一个视图。

   有两种类型的高级索引:整数和布尔值。

   整数索引:

import numpy as np 
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print y  ## [1 4 5]

  使用 : 和 ...的高级索引

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我们的数组是:'  
print x 
print  '\n'  
# 切片
z = x[1:4,1:3]  
print  '切片之后,我们的数组变为:'  
print z 
print  '\n'  
# 对列使用高级索引 
y = x[1:4,[1,2]] 
print  '对列使用高级索引来切片:'  
print y

   结果: 

我们的数组是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8]
 [ 9 10 11]]

切片之后,我们的数组变为:
[[ 4  5]
 [ 7  8]
 [10 11]]

对列使用高级索引来切片:
[[ 4  5]
 [ 7  8]
 [10 11]]

布尔索引

print a[a>5]

 

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我们的数组是:'  
print x 
print  '\n'  
# 现在我们会打印出大于 5 的元素  
print  '大于 5 的元素是:'  
print x[x >  5]

   结果

我们的数组是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8] 
 [ 9 10 11]] 

大于 5 的元素是:
[ 6  7  8  9 10 11]









你可能感兴趣的:(numpy使用教程之数组的创建与遍历)