# -*- coding: utf-8 -*-
"""
Created on Sat Mar 9 16:39:52 2019
@author: ZengWei
"""
import numpy as np
'''
Part 1:基础操作
'''
array = np.array([[1,2,3],
[2,3,4]],dtype=np.int32)
print(array)
print(array.dtype)
print('number of dim:',array.ndim)
print('shape:',array.shape)
print('size:',array.size)
np.zeros((3,4))
np.ones((3,4))
np.empty((3,4))
np.arange(10,20,2) # (起始,结束,步长)
np.arange(12).reshape((3,4))
np.linspace(1,10,6) # (起始,结束,个数)
'''
Part 2:基本运算
'''
a = np.array([10,20,30,40])
b = np.arange(4)
c = a-b
c = b**2
c = 10*np.sin(a)
print(b<3)
#print(b==3)
a = np.array([[1,2],
[2,3]])
b = np.arange(4).reshape((2,2))
c = a*b # 元素乘法
c_dot = np.dot(a,b) # 矩阵乘法
#c_dot = a.dot(b)
a = np.random.random((2,4))
np.sum(a)
np.sum(a,axis=1)
np.min(a,axis=0)
np.max(a)
A = np.arange(14,2,-1).reshape((3,4))
print(np.argmin(A))
print(np.argmax(A))
np.mean(A,axis=0) # A.mean()
np.average(A)
np.median(A) # 中位数
np.cumsum(A) # 累加
np.diff(A) # 累差
np.nonzero(A) # 找非0
np.sort(A)
np.transpose(A) # A.T
print((A.T).dot(A))
np.clip(A,5,9) # 小于5的变成5,大于9的变成9
'''
Part 3:索引
'''
print(A[2])
print(A[1][1])
#print(A[2,1])
#print(A[1:2,1])
for row in A:
print(row)
for column in A.T:
print(column)
print(A.flatten())
for item in A.flat:
print(item)
'''
Part 4:合并
'''
A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B)) # vertical stack (上下)
print(A.shape,C.shape)
D = np.hstack((A,B)) # horizontal stack (左右)
print(A[np.newaxis,:]) # 行上加了一个维度
A = A[:,np.newaxis]
B = B[:,np.newaxis]
E = np.concatenate((A,B,B,A),axis=0) # 多个合并
'''
Part 5:分割
'''
A = np.arange(12).reshape((3,4))
print(np.split(A,2,axis=1)) # 依照列分成2块
print(np.array_split(A,3,axis=1)) # 不等项分割
np.vsplit(A,3)
np.hsplit(A,2)
'''
Part 6:Copy相关
'''
a = np.arange(4)
b = a
c = a
d = b
b is a
d is a
a[0] = 23
# a改变,b,c,d也会改变,同样b,c,d改变,四个都会变
b = a.copy() # deep copy,改变a不会影响b