Python-Numpy中Array基础操作

numpy基础操作

import numpy as np
import pandas as pd

属性

array=np.array([[1,2,3],[2,3,4]])
print(array)
print('number of dim:',array.ndim)#维度
print('shape',array.shape)#行列
print('size',array.size)#元素个数
"""
[[1 2 3]
 [2 3 4]]
number of dim: 2
shape (2, 3)
size 6
"""
#数据类型
array0=np.array([[1,2,3],[2,3,4]],dtype=np.float16)#np.int64
print(array0.dtype)
# float16

数组认识

zero=np.zeros((3,4))#双括号因为类型默认不写而已
one=np.ones((3,4),dtype=np.int64)#都是1
print(zero)
print(one)
a=np.arange(10,20,2)#向量(首,末,步长)
print(a)
a[-1]=21
a=np.delete(a,0)#删除第1个元素
print(a)#在a的基础上修改最后一个值为21

b=np.arange(12,dtype=float)#0-11浮点型
print(b)
c=np.arange(12).reshape((3,4))#设置行列
print(c)
d=np.linspace(1,10,6).reshape((2,3))#线段(首,末,个数)
print(d)
e=np.random.randint(1,10,(2,5))#1-10之间2*5随机矩阵
print(e,'\n')
print("#数组维度")
#一维数组输出为行,二维数组输出为矩阵,三维数组输出为矩阵列表
c1=np.array([1,2,3])#一维数组,一个括号
c2=np.array([[1,2],[3,4]])#二维数组,二个括号
c3= np.array([[[1,2],[3,4],[5,6]],[[1,2],[3,4],[5,6]]])#三维数组
print(c3, c3.shape,c3.ndim)
"""
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
[10 12 14 16 18]
[12 14 16 21]
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11.]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[[ 1.   2.8  4.6]
 [ 6.4  8.2 10. ]]
[[6 1 5 2 9]
 [6 6 9 8 4]] 
  
#数组维度
[[[1 2]
  [3 4]
  [5 6]]

 [[1 2]
  [3 4]
  [5 6]]] (2, 3, 2) 3
  """

基础运算1

e=np.arange(4)
f=e**2#平方双星
g=10*np.sin(np.pi/2)#np.pi弧度制
h=10*np.sin(f)
print(f,g,h)
print(e<2)#比较布尔
# np.exp
#矩阵计算
a0=np.array([[1,2],[2,3]])
b0=np.arange(4).reshape((2,2))
c0=a0*b0#点乘
c_dot=np.dot(a0,b0)#叉乘
c_dot1=a0.dot(b0)#叉乘
print(c0)
print(c_dot)
print(c_dot1,'\n')
rand=np.random.random((2,4))#第一个random是模块。第二个random是函数0-1随机生成
print(rand)
print(np.sum(rand))
print(np.min(rand,axis=1))#各行最小值
print(np.min(rand,axis=0))#各列最大值
print("        ")
#最小值位置索引[0]起步
print(np.argmin(rand))
print(np.average(rand,axis=1))#求取平均mean和average
print(rand.mean())
#median中位数std(1)标准差
"""
[0 1 4 9] 10.0 [ 0.          8.41470985 -7.56802495  4.12118485]
[ True  True False False]
[[0 2]
 [4 9]]
[[ 4  7]
 [ 6 11]]
[[ 4  7]
 [ 6 11]] 

[[0.64530567 0.6523024  0.37349276 0.0186477 ]
 [0.66123502 0.03198241 0.4926486  0.81234177]]
3.687956337947351
[0.0186477  0.03198241]
[0.64530567 0.03198241 0.37349276 0.0186477 ]
        
3
[0.42243714 0.49955195]
0.46099454224341885
"""

基础运算2

A=np.arange(14,2,-1).reshape((3,4))
print(np.mean(A,axis=0))#列求平均值
print(np.sort(A))#sort排序
print(np.transpose(A))#转置
print(A.T)#转置
print("        ")
#clip(矩阵,小于此值变此值,大于此值变此值)中间不变
print(np.clip(A,5,9))

"""
[10.  9.  8.  7.]
[[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]]
"""

索引使用

B=np.arange(3,15).reshape((3,4))
print(B)
print(B[2])#第三行
print(B[2:,])
print(B[2,1:4])#列从1开始
print(B[0][0])#第一个数
print(B[0,0])
print("        ")
print("#循环出行")   
for row in B:
    print(row)
print("        ")
print("#循环出列")
for col in B.T:
    print(col)

print("#循环出每项")
print(B.flatten())#展开一个向量
for item in B.flat:#flat是迭代器
    print(item)
print("删除",'\n')
B=np.delete(B,1,axis=0)#删除第二行元素
print(B)
"""
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
[11 12 13 14]
[[11 12 13 14]]
[12 13 14]
3
3
        
#循环出行
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
        
#循环出列
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
        
#循环出每项
[ 3  4  5  6  7  8  9 10 11 12 13 14]
3
4
5
6
7
8
9
10
11
12
13
14
删除 

[[ 3  4  5  6]
 [11 12 13 14]]
"""

数组合并

C=np.array([[1,1,1]])
D=np.array([[2,2,2]]) 
C1=np.array([1,1,1])#一个[]是一维数组,[[]]是二维数组行列,引用时注意区别
print(np.vstack((C,D)))#vertical stack 注意双括号
E=np.hstack((C,D))#horizontal stack
print(E)
print(C.shape,E.shape,C1.shape)
print(C.T)#变成3*1
print(C1)
print(C1.T)#C1和C1.T 没有变
print("C.T.shape,C1.T.shape")
print("        ")
print("#C1[np.newaxis,:]和C1[:,np.newaxis]的区别 C1是(,N)")
print(C1[np.newaxis,:])#增加了一个维度成为二维数组,行向量(1,N)[[1 1 1]]
print(C1[:,np.newaxis])#增维度增列(N,1)成列向量
print(C1.reshape(3,1))#重新reshape也可以增加维度
print("        ")
print("# concatenate合并")
H=np.vstack((C,C,D))
H0=np.concatenate((C,C,D),axis=0)#纵向合并同上
print(H)
print(H0)
"""
[[1 1 1]
 [2 2 2]]
[[1 1 1 2 2 2]]
(1, 3) (1, 6) (3,)
[[1]
 [1]
 [1]]
[1 1 1]
[1 1 1]
C.T.shape,C1.T.shape
        
#C1[np.newaxis,:]和C1[:,np.newaxis]的区别 C1是(,N)
[[1 1 1]]
[[1]
 [1]
 [1]]
[[1]
 [1]
 [1]]
        
# concatenate合并
[[1 1 1]
 [1 1 1]
 [2 2 2]]
[[1 1 1]
 [1 1 1]
 [2 2 2]]
"""

array分割

#split
S=np.arange(12).reshape((3,4))
print(S)
print(np.split(S,3,axis=0))#对每一列做自上而下的执行,分成3分
print(np.vsplit(S,3))#纵向分成3块
print("               ")
print(np.split(S,2,axis=1))##对每一行做自上而下的执行,分成2分
print(np.hsplit(S,2))#横向分成3块
print("        ")
print("#上面是等分割,下面不等分割 ")
print(np.array_split(S,3,axis=1))##对每一行做自上而下的执行,分成3分"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 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,  3],
       [ 6,  7],
       [10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
        
#上面是等分割,下面不等分割 
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]
 """

copy

l=np.array([0,1,2,3])
m=l
n=l
m=n
l[0]=5
print(l,m,n)#仍然是相同的
print(m is n)
print(" ")
print("不相关联")
p=l.copy()# deep copy
print(p is l)
"""
[5 1 2 3] [5 1 2 3] [5 1 2 3]
True
 
不相关联
False
"""

参考学习
参考学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值