numpy

NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为:

  • NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。
  • NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。



ndarray:一种多维数组对象

import numpy as np
arr_e=np.zeros((2,3))
arr_f=np.ones((3,3))
arr_g=np.full((3,2),10)
arr_h=np.empty((2,3))
print(arr_h)

arr_i =np.arange(0,9,3)#0为开始位置 3为步长 9为截止数
print(arr_i)

arr_j=np.linspace(2,8,4)#4个等间距2-8之间的数
print(arr_j)

# #点积运算
# A = np.array([(1,2),(2,1)])#1x0+2x1 ,1x2+2x0,2x0+1x1,2x2+1x0
# B = np.array([(0,2),(1,0)])
# print(np.dot(A,B))
#
# arr=np.array([[3,4],[5,6]])
# print(arr[0,1])
# print(arr[0,...]
#
#
# arr1=np.array([(1,2),(3,4),(5,6)])
# arr2 = arr1[[0,2,2],[0,1,0]]
# print(arr2)

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

 

NumPy 迭代数组

import numpy as np
 
a = np.arange(6).reshape(2,3)

for x in a:
    print(x)

for x in np.nditer(a):
    print (x, end=", " )

for x in np.nditer(a.T.copy(order='C')):
    print (x, end=", " )

for x in np.nditer(a, order='F'):Fortran order,即是列序优先;
for x in np.nditer(a.T, order='C'):C order,即是行序优先;

迭代修改

import numpy as np
 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print ('原始数组是:')
print (a)
print ('\n')
for x in np.nditer(a, op_flags=['readwrite']): 
    x[...]=2*x 
print ('修改后的数组是:')
print (a)

NumPy 高级索引

整数索引

import numpy as np 
 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print ('我们的数组是:' )
print (x)
print ('\n')
rows = np.array([[0,0],[3,3]]) 
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols]  
print  ('这个数组的四个角元素是:')
print (y)

rows是选的4个数的行

cols是选的4个数的列

 

NumPy数组的运算

数组很重要,因为它使你不用编写循环即可对数据执行批量运算。NumPy用户称其为矢量化(vectorization)。大小相等的数组之间的任何算术运算都会将运算应用到元素级

import numpy as np 
 
print ('将 10 左移两位:')
print (np.left_shift(10,2))
print ('\n')
 
print ('10 的二进制表示:')
print (np.binary_repr(10, width = 8))
print ('\n')
 
print ('40 的二进制表示:')
print (np.binary_repr(40, width = 8))
#  '00001010' 中的两位移动到了左边,并在右边添加了两个 0

NumPy 排序函数

实例
import numpy as np  
 
a = np.array([[3,7],[9,1]])  
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 sort() 函数:')
print (np.sort(a))
print ('\n')
print ('按列排序:')
print (np.sort(a, axis =  0))
print ('\n')
# 在 sort 函数中排序字段 
dt = np.dtype([('name',  'S10'),('age',  int)]) 
a = np.array([("raju",21),("anil",25),("ravi",  17),  ("amar",27)], dtype = dt)  
print ('我们的数组是:')
print (a)
print ('\n')
print ('按 name 排序:')
print (np.sort(a, order =  'name'))

 

posted @ 2019-07-15 09:57  Languid  阅读(230)  评论(0编辑  收藏  举报