一、属性
- ndim:维度
- shape:行数和列数
- size:个数
import numpy as np
array = np.array([[1, 2, 3], [2, 3, 4]]) #将列转化为矩阵
print(array)
print('num of ndim', array.ndim) #维度
print('num of shape', array.shape) #行数和列数
print('num of size', array.size) #个数
[[1 2 3]
[2 3 4]]
num of ndim 2
num of shape (2, 3)
num of size 6
二、Numpy的创建array
- array:创建数组
- dtype:数据类型
- zeros,ones,empty:全0,全1,空
- arange:指定范围创建数据
- linspace:指定线段创建数据
#a = np.array([2, 3, 4],dtype=np.float) #指定类型int float
#a = np.zeros((2,3)) #全zeros,ones,empty 2行3列
#a = np.ones((2,3),dtype=np.int)
#a = np.arange(10, 20, 2) #创建连续数 10—19,步长2
#a = np.arange(12).reshape(3,4)
a = np.linspace(1,10,6).reshape((2,3)) #创建线性数据 1—10,分成6段
print(a)
[2. 3. 4.]
[[0. 0. 0.]
[0. 0. 0.]]
[[1 1 1]
[1 1 1]]
[10 12 14 16 18]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 1. 2.8 4.6]
[ 6.4 8.2 10. ]]
三、 基础运算
1.基础运算
- +,-,*:加,减,乘
- **:平方
- sin,cos,tan
- >,<:大于,小于→true false
- dot:矩阵乘法
- sun,max,min:求和,最大,最小
#a = np.array([10,20,30,40])
#b = np.arange(4)
#c = a+b #+,-,*
#d = np.sin(a) #sin,cos,tan
#e = a<20 #<,>
#f = np.dot(a,b) #矩阵乘法
#g = a.dot(b)
#print(c)
#print(d)
#print(e)
#print(f)
#print(g)
a = np.random.random((2,4))
b = np.sum(a) #求和。max min
c = np.sum(a,axis=0) #列求和 axis=1 行求和
print(b)
print(c)
[10 21 32 43]
[-0.54402111 0.91294525 -0.98803162 0.74511316]
[ True False False False]
200
200
4.863344689758311
[1.88911642 0.33159381 0.93565677 1.70697769]
2.基本运算
- argmin,argmax:最小元素索引,最大元素索引
- mean,average:平均
- median:中位数
- cumsum,diff:累加,累减
- sort:每行从小到大排列
- transpose,.T:转置
- clip:限定大小
A = np.arange(2,14).reshape((3,4))
print(np.argmin(A)) #最小(大)元素索引
print(np.argmax(A))
print(np.mean(A)) # 平均值
print(np.average(A))
print(np.median(A)) # 中位数
print(np.cumsum(A)) #累加,累减
print(np.diff(A))
0
11
7.5
7.5
7.5
[ 2 5 9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
[1 1 1]
[1 1 1]]
A = np.arange(14,2, -1).reshape((3,4))
print(np.sort(A)) #从小到大排列行
print(np.transpose(A)) #转置
print(A.T)
print(np.clip(A,5,9)) #限制在5—9
[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
[[9 9 9 9]
[9 9 8 7]
[6 5 5 5]]
四、索引
- a[1] :一维索引
- A[1][1]:二维索引
- flatten:展成一维数列
A = np.arange(3,15)
print(A[3])
# 6
A = np.arange(3,15).reshape((3,4))
print(A[1][1])
# 8
print(A.flatten())
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
五、array合并
- vstack,hstack:纵向合并,横向合并
- newaxis:转置操作
- concatenate:多矩阵或序列合并
A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B)) # 纵向合并
D = np.hstack((A,B)) # 横向合并
'''
[[1,1,1]
[2,2,2]]
[1,1,1,2,2,2]
'''
print(A[np.newaxis,:])
# [[1 1 1]]
print(A[:,np.newaxis])
"""
[[1]
[1]
[1]]
"""
C = np.concatenate((A,B,B,A),axis=0) #列操作
print(C)
"""
array([[1],
[1],
[1],
[2],
[2],
[2],
[2],
[2],
[2],
[1],
[1],
[1]])
"""
D = np.concatenate((A,B,B,A),axis=1) #行操作
print(D)
"""
array([[1, 2, 2, 1],
[1, 2, 2, 1],
[1, 2, 2, 1]])
"""
六、array分割
- split(矩阵,分割数,axis=1):纵向分割,横向分割(等分)
- hsplit、vsplit(矩阵,分割数):纵向分割,横向分割(等分)
- array_split(矩阵,分割数,axis=1)不等量分割
A = np.arange(12).reshape((3, 4))
print(np.split(A, 2, axis=1))
print(np.split(A, 3, axis=0))
#print(np.hsplit(A, 2))
#print(np.vsplit(A, 3))
print(np.array_split(A, 3, axis=1))
'''
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
'''
七、copy&deep copy
-
=:赋值(有关联)
-
copy():赋值(无关联)