numpy基础

import numpy as np

array = np.array([[1,2,3],
                  [2,3,4]])

print("number of dim: ", array.ndim)
print("shape: ", array.shape)
print("size: ", array.size)  # 有几个元素
number of dim:  2
shape:  (2, 3)
size:  6
a = np.array([3, 4, 5], dtype = np.float) #np.int64/32等
print(a.dtype)
float64
a = np.zeros((3,4)) # 三行四列0矩阵
a = np.ones((2, 3))
a = np.empty((3, 4))
print(a)
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
a = np.arange(10, 20 ,2) # 最后是步长
print(a)
[10 12 14 16 18]
# 将(1,12)变成(3,4)
a = np.arange(12).reshape(3,4)
print(a)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
# 1到10的5个数,自动算步长
a = np.linspace(1,10,5)
print(a)
[ 1.    3.25  5.5   7.75 10.  ]

计算

import numpy as np
a = np.array([10, 20, 30, 40])
b = np.arange(4)

c = b**2 # 平方
d = np.sin(a) # 求sin弧度制

print(b<3)
[ True  True  True False]
# 矩阵乘法
a = np.array([[1, 1],
             [0, 1]])
b = np.arange(4).reshape((2,2))

c = a*b # 点乘
c_dot = a.dot(b)
c_dot_2 = np.dot(a, b)

print(c)
print(c_dot)
[[0 1]
 [0 3]]
[[2 4]
 [2 3]]
a = np.random.random((2, 4))
print(a) # 随机0-1的数
print("求和:{}\n".format(np.sum(a)))
# axis=0 求每列的和,axis=1求每行和,最大最小均值同理
print(np.sum(a, axis=0))
print(np.min(a))
print(np.max(a))
print(np.mean(a, axis = 0))
[[0.44767692 0.60824735 0.30681651 0.97058108]
 [0.62467156 0.77957734 0.99178724 0.47179949]]
求和:5.20115749801983

[1.07234848 1.38782469 1.29860376 1.44238057]
0.3068165125193101
0.9917872427118448
[0.53617424 0.69391235 0.64930188 0.72119029]
import numpy as np

A = np.arange(2, 14).reshape((3, 4))
print(A)
print(np.argmin(A)) #最小值的索引
print(np.argmax(A))
# 两种算均值方法
print(np.mean(A))
print(A.mean())
# 中位数
print(np.median(A))
# 累加
print(np.cumsum(A))
# 累差
print(np.diff(A))
# 输出非零数的索引,两个array分别是行, 列
print(np.nonzero(A))
# 排序
print(np.sort(A))
# 转置
print(np.transpose(A))
print(A.T)
#  小于5的值变成5,大于9的数变9,之间的数不变
print(np.clip(A, 5, 9))
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
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]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
[[ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]
 [ 5  9 13]]
[[ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]
 [ 5  9 13]]
[[5 5 5 5]
 [6 7 8 9]
 [9 9 9 9]]

索引

import numpy as np

A = np.arange(3, 15)
print(A)
print(A[3]) # 一维数组可以直接索引值
[ 3  4  5  6  7  8  9 10 11 12 13 14]
6
B = np.arange(3, 15).reshape(3, 4)
print(B)
print(B[2]) # 二维会索引行
print(B[1][1]) # 索引元素
print(B[1, 1])

print(B[1,:]) # 第1行的所有数
print(B[:,2]) # 第二列所有数
print(B[1, 2:4])
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
[11 12 13 14]
8
8
[ 7  8  9 10]
[ 5  9 13]
[ 9 10]
# 按行迭代
for row in B:
    print(row)
    
# 按列迭代
for col in B.T:
    print(col)

# 迭代元素
print(B.flatten()) # 先变成一维
for ele in B.flatten():
    print(ele)
[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

array合并

import numpy as np

A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
C = np.vstack((A, B))  # 上下合并
D = np.hstack((A, B))  # 左右合并

print(A.shape,C.shape, D.shape) 
(3,) (2, 3) (6,)
[1 1 1]

(3,)意思是只有3个数的序列

print(A.T) # 转置不能把他变成竖向的
# 
print(A[np.newaxis,:].shape) # 行上加了个维度
print(A[:, np.newaxis].shape)
A[:, np.newaxis]
[1 1 1]
(1, 3)
(3, 1)





array([[1],
       [1],
       [1]])
print( A.reshape(-1,1) ) # 可以直接reshape
print( A.reshape(3,1) )
[[1]
 [1]
 [1]]
[[1]
 [1]
 [1]]
A = np.array([1, 1, 1]).reshape(-1,1)
B = np.array([2, 2, 2]).reshape(-1,1)
# axis = 0纵向合并,axis = 1横向合并
print( np.concatenate((A, B, A, B), axis = 0) )
print( np.concatenate((A, B, A, B), axis = 1) )
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]
 [1]
 [1]
 [1]
 [2]
 [2]
 [2]]
[[1 2 1 2]
 [1 2 1 2]
 [1 2 1 2]]

array分割

import numpy as np

A = np.arange(12).reshape(3, 4)
print(A)

print(np.split(A, 2, axis=1)) # 横向分成2块排着,这样理解
                              # axis=0列操作,axis=1行操作
print(np.split(A, 3, axis=0))
[[ 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]])]
# 不等分割
print(np.array_split(A, 2, axis=0))
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
# 纵向和横向分割比较简便的方法
print(A)
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, 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的赋值

import numpy as np

a = np.array([0, 1, 2, 3])
b = a
c = a
d = b
a[0] =11
b
array([11,  1,  2,  3])

b就是a,改b也会影响a

b = a.copy() # 深拷贝,改a不会影响b
a[3] = 4
b
array([11,  1,  2,  3])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值