numpy中简单且实用的操作(作业1)

numpy基本加减和取行操作

import numpy as np

a = np.array([1, 1, 1, 1])
b = np.array([[1], [1], [1], [1]])
print(a + b)

print("#########")
c = np.array([1, 1, 1, 1])
print(c+b)
# array([[2,2,2,2],
#       [2,2,2,2],
#       [2,2,2,2],
#       [2,2,2,2]])

print("#########")
W = np.array([[1, 1, 1],
              [2, 2, 2]])

print(W[:, 1])
print("#########")
print(W[1])

print("#########")
W[:, 1] = np.array([5, 5])
print(W)

 运行结果

 矩阵删除、插入、尾部添加操作(delete,insert,append)

import numpy as np

matrix = [[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]
          ]
p1 = np.delete(matrix, 1, 0)
print('>>>p1>>>\n', p1)
p2 = np.delete(matrix, 1, 1)
print('>>>>p2>>>>\n', p2)
p3 = np.delete(matrix, 1)
print('>>>>p3>>>>\n', p3)
p4 = np.delete(matrix, [0, 1], 1)
print('>>>>p4>>>>\n', p4)

 运行截图

 insert()函数

import numpy as np

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
q1 = np.insert(matrix, 1, [1, 1, 1, 1], 0)  # 第0维度(行)第1行添加[1,1,1,1]
print('>>>>q1>>>>\n', q1)
q2 = np.insert(matrix, 0, [1, 1, 1], 1)  # 第1维度(列)第0列添加1,1,1
print('>>>>q2>>>>\n', q2)
q3 = np.insert(matrix, 3, [1, 1, 1, 1], 0)  # 第0维度(行)第3行添加[1,1,1,1]
print('>>>>q3>>>>\n', q3)

 运行截图

append()函数 

import numpy as np

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
m1 = np.append(matrix, [[1, 1, 1, 1]], axis=0)
print('>>>>m1>>>>\n', m1)

m2 = np.append(matrix, [[1], [1], [1]], axis=1)
print('>>>>m2>>>>\n', m2)

m3 = np.append(matrix, [1, 1, 1, 1])
print('>>>>m3>>>>\n', m3)

运行截图 

 

 np.random.choice(a, size, replace, p)

import numpy as np

a1 = np.random.choice(7, 5)  # 从0~7中随机选择5个数组成一维数组
print(a1)

a2 = np.random.choice([0, 1, 2, 3, 4, 5, 6], 5)  # 从给定list中随机选择5个数组成一维数组
print(a2)

a3 = np.random.choice(np.array([0, 1, 2, 3, 4, 5, 6]), 5)  # 将list换成array数组依然可以运行,效果一致
print(a3)

a4 = np.random.choice([0, 1, 2, 3, 4, 5, 6], 5, replace=False)  # 上述均有重复,将replace设置为False,即可按要求没有重复
print(a4)

a5 = np.random.choice(np.array([0, 1, 2, 3, 4, 5, 6]), 5, p=[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.4])
# 给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1
print(a5)

运行截图

np.argmax(a, axis=None, out=None) 

import numpy as np

a = np.array([[1, 1, 1], [2, 2, 2], [0, 3, 6]])
print(a)

b1 = np.argmax(a)
print(b1)

b2 = np.argmax(a, axis=0)  # 按列选取最大值的索引
print(b2)

b3 = np.argmax(a, axis=1)  # 按行选取最大值的索引
print(b3)

运行截图

 

 星号(*)的作用

import numpy as np

y1 = np.linspace(-10.0, 10.0)  # 默认生成50个数据
print(y1)

y2 = np.linspace(1, 10, 10)  # 生成10个数据,包括首尾
print(y2)

y3 = np.linspace(1, 10, 10, endpoint=False)  # 不包括尾部数据
print(y3)

y4 = np.linspace(1, 10, 6, retstep=True)  # 将步长与结果的数组放入一个list、
print(y4)

运行截图

拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)

import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6], [1, 2, 3]])
print(x.flatten())

print(x.ravel())

print(x.ravel('F'))

print(x.flatten('F'))

x.flatten()[1] = 20
print(x)

x.ravel()[1] = 20
print(x)

print(x.reshape(1, -1))

x = np.array([1, 2, 3, 6, 7, 8])  # 注意操作的是数组,即原x是数组
print(x[None, :])  # 转成行向量(二维矩阵)

print(x[:, None])

print(x[np.newaxis, :])

运行截图

np.prod() 计算元素乘积 

import numpy as np

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

print(np.prod(x, axis=1))

print(np.prod(x, axis=0))

运行截图

把矩阵大于或小于N的元素置M

import numpy as np

x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
print(x)

y1 = np.maximum(0, x)
print(y1)

y2 = np.minimum(0, x)
print(y2)

x1 = x.copy()
print(x1)

x1[x1 < 0] = 0
print(x1)

x2 = x.copy()
x2[x2 > 0] = 0
print(x2)

运行截图

numpy中的矩阵copy 

import numpy as np

x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
print(x)

x1 = x.copy()
x1[x1 > 0] = 0
print(x1)

print(x)

x2 = x
x2[x2 > 0] = 0
print(x2)

print(x)

x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
x3 = x[2]  # 取x的第3行
print(x3)

x3[2] = 100
print(x)

 运行截图

np.zeros_like()构造全零矩阵,无需指定大小 

import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.zeros_like(x)  # 生成一个和x大小相同的全零矩阵
print(y)

 运行截图

产生随机浮点数

import numpy as np
n = np.random.rand(3,4)
print(n)

运行截图

 np.random.randn() 生成正态分布矩阵

import numpy as np

x = np.random.randn(2, 3)
print(x)

y = np.multiply(0.1, np.random.randn(2, 3)) + 0.5
print(y)

 运行截图

np.randm.randint() 生成离散均匀分布的整数值组成的矩阵 

import numpy as np

z = np.random.randint(2, 9, (2, 3))
print(z)

m = np.random.randint(9, size=(2, 3))
print(m)

x = 'You are right'
print(type(x))

x = [1, 2, 3]
print(type(x))

# python 断言 assert
assert type(x) == str, 'x is not str'

 运行截图

np.pad()函数进行padding操作 

import numpy as np

A = np.arange(95, 99).reshape(2, 2)
print(A)

B = np.pad(A, ((3, 2), (2, 3)), 'constant', constant_values=(0, 0))
print(B)

b = np.array([[[1, 2], [3, 4]], [[3, 4], [7, 8]], [[4, 5], [1, 2]]])
print(b)

print(np.pad(b, ((0, 0), (1, 1), (1, 1)), 'constant', constant_values=0))

 运行截图

 numpy.empty() 创建指定形状和数据类型且未初始化的数组

import numpy as np
x = np.empty([3,2], dtype = int)
print (x)

运行截图

判断两个矩阵元素完全相等&&存在相等 

import numpy as np

a = np.array([[1, 2, 3], [1, 2, 3]])
b = np.array([[1, 2, 3], [1, 2, 3]])
c = np.array([[1, 4, 3], [1, 2, 3]])
print((a == b).all())
print((a == c).all())
print((a == c).any())

运行截图

np.full 用于形成元素全为某元素的矩阵 

import numpy as np

c = np.array([[1, 2], [3, 4]])
print(c.astype(np.float32))

运行截图

 

np.meshgrid() 快速生成网格 

import numpy as np

x = np.array([1, 3, 5])
y = np.array([4, 6])
XX, YY = np.meshgrid(x, y)
print(XX)
print(YY)

运行截图

np.hstack() 和 np.vstack() 用于堆叠矩阵 

import numpy as np

x = np.array([[3, 4, 5], [1, 3, 4]])
y = np.array([[1, 1, 1], [2, 2, 2]])
print(np.hstack((x, y)))  # 水平堆叠

print(np.vstack((x, y)))

运行截图

numpy 取整 

import numpy as np
a = np.array([0.125,0.568,5.688])
print(np.round(a))

print(np.round(a,decimals=2))

print(np.floor(a))

print(np.ceil(a))

运行截图

np.newaxis 在特定位置增加一个维度 

import numpy as np

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

print(c[:, np.newaxis])

print(c[np.newaxis, :])

 运行截图

 python 广播机制

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
a = np.array([[1, 2, 3, 6], [4, 5, 6, 6]])
a1 = a.reshape((1, 2, 4))
print(a1)

b = np.array([[3, 4, 5, 6], [1, 2, 3, 4], [4, 5, 5, 5]])
print(b)

b1 = b.reshape((1, 3, 4)).transpose((1, 0, 2))
print(b1)

print(a1)
print(a1 + b1)

c = np.array([[[1, 2, 5], [3, 4, 6]], [[4, 5, 6], [7, 8, 9]]])
print(c)

print(c.transpose(1, 0, 2))
print(c.transpose(1, 2, 0))

运行结果

[[[1 2 3 6]
  [4 5 6 6]]]
[[3 4 5 6]
 [1 2 3 4]
 [4 5 5 5]]
[[[3 4 5 6]]

 [[1 2 3 4]]

 [[4 5 5 5]]]
[[[1 2 3 6]
  [4 5 6 6]]]
[[[ 4  6  8 12]
  [ 7  9 11 12]]

 [[ 2  4  6 10]
  [ 5  7  9 10]]

 [[ 5  7  8 11]
  [ 8 10 11 11]]]
[[[1 2 5]
  [3 4 6]]

 [[4 5 6]
  [7 8 9]]]
[[[1 2 5]
  [4 5 6]]

 [[3 4 6]
  [7 8 9]]]
[[[1 4]
  [2 5]
  [5 6]]

 [[3 7]
  [4 8]
  [6 9]]]

numpy 中双冒号的用法

import numpy as np

a = np.array([2, 2, 3, 4, 5, 5, 6, 7])

print(a[0:7:2])
print(a[0::2])
print(a[::-1])

运行截图

 

python 的内置函数 slice  

import numpy as np
a = np.array([2,2,3,4,5,5,6,7])
s = slice(0,7,2)
print(a[s])

 运行截图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值