import numpy as np
np.ones([5,5])
np.zeros((2,2,2))
arr1 = np.ones([5,5])
arr1.shape
arr1.dtype
np.empty((3,2),dtype=np.float64)
np.arange(15) #type of result is ndarray
a=[1.3,2.5,3.7,8.4,5.8,6.9]
a=np.array(a)
#or a=np.asarray()
np.eye(3)
a.astype(np.int8)
a*a
1/a
a=[1.3,2.5,3.7,8.4,5.8,6.9]
print a
a=np.array(a)
a_slice = a[2:5]
a_slice[1] = 15
print a
a=[1.3,2.5,3.7,8.4,5.8,6.9]
print a
a=np.array(a) #!!! or it won't work
a_slice = a[2:5].copy()
a_slice[1] = 15
print a
a=[1.3,2.5,3.7,8.4,5.8,6.9]
print a
#a=np.array(a)
a_slice = a[2:5]
a_slice[1] = 15
print a
print arr1[3][4]
print arr1[3,4]
np.random.randn(4,4)
from numpy.random import *
d=randn(6,3)
print d
names = np.array(['A','B','c','A','a','D'])
names == 'A'
d[names == 'A'] #output row 1 and 4 only
d[names == 'A',2]
d[names == 'A', 1:2]
d[names != 'A']
d[~(names == 'A')]
arr = np.empty((8,4))
for i in range(8):
arr[i]=i
arr
arr[[1, 7, 2, 4, 5]]
arr[[-1, -2, -3]]
arr = np.arange(32).reshape((8,4))
arr
arr[[1,5,7,2],[0,3,1,2]]
arr[[1,5,7,2]][:,[0,3,1,2]]
arr[np.ix_([1,5,7,2],[0,3,1,2])]
print arr
print '-'*20
print arr.T
np.dot(arr.T,arr)
对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置
arr = np.arange(16).reshape((2,2,4))
arr
arr.transpose((1,0,2))
arr.swapaxes(1,2)
部分一元ufunc函数:
一元ufunc函数 | 说明 |
---|---|
abs、fabs | 计算绝对值,后者只适用于非复数值但更快 |
log、log10、log2、log1p | 前三个分别为底数为e,10,2的log,第四个为底数为2的log(x+1) |
sign | 计算正负号 |
ceil | 计算ceiling值,即大于该值的最小整数 |
floor | 计算floor值,即小于该值的最大整数 |
rint | 四舍五入到整数,保留dtype |
modf | 将数组的小数和整数部分以两个独立数组的形式返回 |
isnan | 返回一个表示“哪些是NaN”的布尔型数组 |
isfinite、isinf | 返回一个表示“哪些是有穷(无穷)”的布尔型数组 |
二元ufunc函数 | 说明 |
---|---|
add、substract、multiply、devide | 将数组中的元素相加/相减/相乘/相除 |
floor_devide | 向下圆整除法(丢弃余数) |
power | 计算A^B |
maximum/minimum/fmax/fmin | 最大/最小值,后两个会忽略NaN |
mod | 取模 |
copysign | 将第二个数组中的值复制给第一个数组中的值 |
greater/greater_equal/less/less_equal/equal/not_equal | >、>=、<、<=、=、!=,返回布尔型数组 |
points = np.arange(0,10,1)
points
x, y = np.meshgrid(points,points)
x
y
import matplotlib.pyplot as plt
z = np.sqrt(x**2 + y **2)
z
plt.imshow(z, cmap=plt.cm.gray);plt.colorbar();
plt.title("Image plot of $\sqrt{x^2 + y^2}$ for a grid of values")
plt.show()
x = np.arange(1.1, 1.6, 0.1)
y = np.arange(2.1, 2.6, 0.1)
cond = np.array([True, False, True, True, False])
x,y
numpy.where是一个三元函数:
np.where(cond,x,y) #if True, output the value in x, or output the value in y
arr = np.random.rand(5,4)
arr
arr.mean()
np.mean(arr)
arr.sum()
arr.mean(axis=1)
arr = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arr
arr.cumsum(0)
arr.cumsum(1)
arr.cumprod(0)
arr.argmax()
arr.argmin()
arr = randn(8)
arr
arr.sort()
arr
arr = randn(5,4)
arr
arr.sort(1)
arr
ints = np.array([1,1,1,1,2,2,2,3,4,4,4,5,5])
np.unique(ints)
a= np.array([1,2,3,4,5])
b= np.array([2,3,4,5,6])
np.intersect1d(a,b)
np.union1d(a,b)
np.in1d(a,b)
np.setdiff1d(a,b)
np.setxor1d(a,b)
np.dot(x,y)
x.dot(y)
from numpy.linalg import inv, qr
numpu.linalg中常用函数:
函数 | 说明 |
---|---|
diag | 返回对角线上的元素(一维数组) |
dot | 矩阵乘法 |
trace | 计算矩阵的迹 |
det | 计算矩阵的行列式 |
eig | 计算矩阵的特征值,特征向量 |
inv | 计算矩阵的逆 |
pinv | 计算矩阵的Moore-Penrose伪逆 |
qr | 计算QR分解 |
svd | 计算奇异值分解 |
solve | 解线性方程Ax=b,其中A为一个方阵 |
lstsq | 计算Ax=b的最小二乘解 |