Python numpy 学习杂记2

Numpy索引

#就像python的list一样,numpy也可以进行索引
import numpy as np
A = np.arange(3,15).reshape(3,4)
#print(A)
#print(A[3]) #索引从0开始。一维都输出以个数
print(A[2]) #  二维的话就输出一行
print(A[1][1]) # 第几行第几列
print(A[2][1])  
print(A[2,1]) #第二种方式
#与list一样,:可以代表所有
print(A[2,:])
print(A[1,1:2]) #放回的是list
#输出
[11 12 13 14]
8
12
12
[11 12 13 14]
[8]

 

由于有上面的特性,因此可以使用for循环迭代
#迭代行
for row in A:
    print(row)
#迭代列
for col in A.T:
    print(col)  
#输出
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
#迭代一个一个数
print(A.flatten())
#迭代一个一个数
for item in A.flat:
    print(item)
#输出
[ 3  4  5  6  7  8  9 10 11 12 13 14]
3
4
5
...

Numpy array的合并

 

import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
print(np.vstack((A,B))) #上下合并(垂直合并)  vertical 
print(np.hstack((A,B))) #左右合并(水平合并)  horizontal 
#注意,不能把一个横向序列用 转置的方式变成纵向的矩阵
print(A[np.newaxis,:]) #加了一个维度。

A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
print(np.hstack((A,B)))
print(np.hstack((A,A,B))) #可以进行多个合并
C= np.concatenate((A,A,B,A),axis=1)  #按列合并
print(C)
#输出
[[1 1 1]
 [2 2 2]]
[1 1 1 2 2 2]
[[1 1 1]]
[[1 2]
 [1 2]
 [1 2]]
[[1 1 2]
 [1 1 2]
 [1 1 2]]
[[1 1 2 1]
 [1 1 2 1]
 [1 1 2 1]]

Numpy的分割

import numpy as np
A =np.arange(12).reshape(3,4)
print(A)
#纵向分割
print(np.split(A,2,axis=1))  # axis=1 对列分割
#横向分割
print(np.split(A,3,axis=0)) 
#只能进行相等的分割不能进行不等的分割。如何实现不等的分割?
print(np.array_split(A,3,axis=1))
# 第二种分割函数
print(np.vsplit(A,3))
print(np.hsplit(A,2))
#输出
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[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]])]
[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]])]

copy & deep copy

 

import numpy as np 
a = np.arange(4)
print(a)
b=a
c=a
d=b
a[0]=11
print(a)
b is a  #返回True
print(b)
d[1:3]=[22,33]
print(a)
#输出
[0 1 2 3]
[11  1  2  3]
[11  1  2  3]
[11 22 33  3]
import numpy as np 
a = np.arange(4)
print(a)
b=a.copy() #deep copy
b[2]=66
print(a,b)
#输出
[0 1 2 3]
[0 1 2 3] [ 0  1 66  3]  #此时,a已经不变了

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值