numpy速记

import numpy as np
# ---------------numpy属性---------------------#
"""
ndim:维度
shape:行数和列数
size:元素个数
"""
array = np.array([[1, 2, 3], [2, 3, 3]])  # 列表转换成矩阵
print(array)

# ---------------numpy创建array------------------#
"""
array:创建数组
dtype:指定数据类型
zeros:数据全为0
ones:数据全为1
empty:创建数据接近0
arrange:按指定范围创建数据
linspace:创建线段
"""
array = np.array([[1, 2, 3], [2, 3, 3]], dtype=np.int)  # 列表转换成矩阵
print(array.dtype)
array = np.array([[1, 2, 3], [2, 3, 3]], dtype=np.int32)  # 列表转换成矩阵
print(array.dtype)
array = np.array([[1, 2, 3], [2, 3, 3]], dtype=np.float)  # 列表转换成矩阵
print(array.dtype)
array = np.array([[1, 2, 3], [2, 3, 3]], dtype=np.float32)  # 列表转换成矩阵
print(array.dtype)

array = np.zeros((3, 4))  # 3行4列的全0矩阵
print(array)
array = np.ones((3, 4), dtype=np.int)  # 3行4列的全1矩阵,指定数据类型是int64
print(array)
array = np.empty((3, 4))  # 3行4列的全空矩阵,接近0
print(array)
array = np.arange(10, 30, 2)  # 10-29的数据,2步长
print(array)
array = np.linspace(1, 10, 20)  # 开始端1,结束端10,分割成20个数据生成线段
print(array)

array = np.linspace(1, 10, 20).reshape((5, 4))  # reshape原来的array为5行4列矩阵
print(array)


# --------------------------numpy基础运算------------------#

a = np.array([10, 20, 30, 40])
b = np.arange(4)
c = a - b  # 对应元素相减
c = a + b  # 对应元素相加
c = a * b  # 对应元素相乘
c = b ** 3  # 对应元素的3次方
b = np.array([0, 0.5 * np.pi, np.pi, 1.5 * np.pi])
c = np.sin(b)  # 执行三角函数运算
c = b < np.pi  # 返回布尔类型数组
print(c)
# 多维矩阵运算
a = np.array([[1, 1], [0, 1]])
b = np.arange(4).reshape(a.shape)  # 将b变形和a一样
print(b)
c = a * b
print(c)
c = np.dot(a, b)  # 行列矩阵乘法
c = a.dot(b)  # 另外一种表示法
print(c)
a = np.random.random((2, 4))  # 随机生成一个2行4列矩阵
print(a)
print(np.sum(a))  # 矩阵所有元素相加
print(np.min(a))  # 矩阵中最小值
print(np.max(a))
"""对行列进行查找运算时,需要对axis进行赋值,0表示以列作为查找单元,1表示以行作为查找单元"""
print(np.min(a, axis=1))  # 返回值也是array类型,1行2列
print(np.min(a, axis=0))  # 1行4列
"""元素索引"""
a = np.arange(2, 14).reshape((3, 4))
print(a)
print(np.argmax(a))  # 对应最大元素的索引 11
print(np.argmin(a))  # 对应最小元素的索引 0
print(np.mean(a))  # 矩阵中的均值的3种写法
print(np.average(a))
print(a.mean())
"""
cumsum:累加求和
diff:前一项减去后一项
nonzero:非零元素分离横纵坐标
sort:每一行元素从小到大排列
transpose:矩阵转置
clip:矩阵裁剪
"""
print(np.cumsum(a))  # 每一项元素是从原矩阵首项累加到当前项得到的
print(np.diff(a))  # 后一项减去前一项,行数不变列数减1
print(np.nonzero(a))  # 将非零元素的横纵坐标分开,返回两个存储横纵坐标的array
a = np.arange(14, 2, -1).reshape((3, 4))
print(a)
print(np.sort(a))  # 对每一行进行从小到达排列
print(np.transpose(a))  # 矩阵转置的两种表示
print(a.T)
print(np.clip(a, 5, 9))  # 元素比5小就变成5,比9大就变成9


# -------------------------------numpy索引-------------------------
a = np.arange(3, 15)
print(a)
print(a[4])  # 索引从0开始
a = np.arange(3, 15).reshape((3, 4))
print(a)
print(a[2])  # 返回第2行元素
print(a[2][3])  # 确定元素的两种表示法
print(a[2, 3])
print(a[1, 1:3])  # 元素切片,返回array,包括1,不包括3
for row in a:  # 逐行打印
    print(row)
for column in a.T:  # 逐列打印
    print(column)
"""
flat:迭代器
flatten:将二维元素展开成一维"""
print(a.flatten())
for item in a.flat:
    print(item)

import numpy as np
a = np.array([1, 2, 1])
b = np.array([3, 5, 6])
print(np.vstack((a, b)))  # array上下合并
print(np.hstack((a, b)))  # array上下合并
# 对于不是矩阵属性的a,无法直接转置,采用下面的方法变成矩阵属性
print(a[np.newaxis, :])  # 1行3列
print(a[:, np.newaxis])  # 3行1列
print(a[:, np.newaxis].T)
print(np.concatenate((a, b, b, a), axis=0))
# print(np.concatenate((a, b, b, a), axis=1))
# --------------numpy分割------------------#
a = np.arange(12).reshape((3, 4))
print(a)
print(np.split(a, 4, axis=1))  # 纵向分割,分成4份
# print(np.split(a, 3, axis=1))
print(np.split(a, 3, axis=0))  # 横向分割,分成3份
# --------------------numpy copy--------------#
# =赋值有关联性,一个改都会改
a = np.arange(12)
b = a
b[2] = 34
print(b is a)  # true
c = a.copy()
print(c is a)  # false
c[2] = 34
print(c is a)  # false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值