numpy-01-数组创建与计算
Posted 数学小学霸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy-01-数组创建与计算相关的知识,希望对你有一定的参考价值。
数组创建与计算
2020-11
一.简介
重在数值运算,在多维数组上执行数值运算
在python中,是没有数组类型的
二.创建数组与使用
2.1数组ndarray属性
属性 | 说明 |
---|---|
ndim | 数组的维数 |
shape | 数组的尺寸就是行和列 |
size | 表示数组元素的总数,就是数组形状的乘积 |
dtype | 数组中的元素类型 |
itemsize | 数组每个元素的大小,以字节为单位 |
2.2.创建
1.基本创建array
import numpy as np
a = np.array([1,2,3])
print(a)
print(type(a))
结果
[1 2 3]
# 数组类型
<class 'numpy.ndarray'>
2.range()与arange()创建
b = np.array(range(10))
# np.arange(10)快速生成数组等效于 np.array(range(10))
c = np.arange(10)
print(b,c)
print(np.arange(4,10,2))
array2 = np.arange(1,2,0.1)
array2
结果
[0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9]
[4 6 8]
array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])
2.3.数组的数据类型
1. 转换为浮点型
np.float((42))
2.创建时的默认数据类型
dtype = bool
e =np.array(range(1,4),dtype = float)
3.调整类型
f = e.astype("int8")
2.4.使用random生成随机数和列表展开式创建
# 使用random和列表展开式
import random
t7 = np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
# [0.62585892 0.73517226 0.07015482 0.58818792 0.66787815 0.28503394
0.94890377 0.49636205 0.27162496 0.57613225]
# float64
1.无约束条件
后面参数是数组的形状
np.random.random(100)
np.random.random(size = (2,3))
2.均匀分布
np.random.rand(4,5)
3.正态分布
np.random.randn(2,3)
4.给定上下范围
np.random.randint(0,10,size = (2,3))
2.5.调整小数位数
1.round()
t8 = np.round(t7,2)
print(t8)
[0.39 0.86 0.13 0.76 0.47 0.9 0.7 0.2 0.52 0.96]
2.使用控制符
# `"%.2f"%x`
"%.2f"%random.random()
'0.98'
2.6.创建等差等比数组
1.等差
# 10这个没有取到
np.linspace(0,10,10,endpoint=False)
# array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
2.等比
np.logspace(0,10,10,endpoint=False)
# array([1.e+00, 1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05, 1.e+06, 1.e+07,
1.e+08, 1.e+09])
2.7.特殊的数组
数组 | 说明 |
---|---|
np.zeros((2,3)) | 全0 |
np.eye(3) | 对角线为1的数组 |
np.diag([1,2,3,4]) | 对角线数组 |
np.ones((1,2)) | 全1数组 |
三.数组的形状
3.1基本形状
1.只有行
import numpy as np
t1 = np.arange(12)
print(t1)
t1.shape
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
(12,)
2.二维数组
t2 = np.array([[1,2,3],[4,5,6]])
print(t2)
t2.shape
# [[1 2 3]
# [4 5 6]]
# (2, 3)
3.多维数组
-
(2, 2, 3)表示有2页,每页有2行,3列
-
从左往右看的顺序
# 多维数组
t3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(t3)
t3.shape
# [[[ 1 2 3]
[ 4 5 6]]
# [[ 7 8 9]
[10 11 12]]]
# (2, 2, 3)
3.2修改数组形状
1.修改数组类型
t4 = np.arange(12)
t4 = t4.reshape((3,4))
t4
t5 = np.arange(24).reshape((2,3,4))
t5
# array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
# array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
2.修改为一维数组
1.reshape((24,))
- 变成原来的样子
# 这个是没有列的
t5.reshape((24,))
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
2.reshape((24,1))
- 24行 1列
t5.reshape((24,1))
# array([[ 0],
[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12],
[13],
[14],
[15],
[16],
[17],
[18],
[19],
[20],
[21],
[22],
[23]])
3.reshape((1,24))
- 1行 24列
- 比方法一多了一个中括号
t5.reshape((1,24))
# array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23]])
3.3全部展开为一维数组
1.reshape
# t5.shape[0]是算出他的行数
# t5.shape[1]是算出他的列数
t6 = t5.reshape((t5.shape[0]*t5.shape[1],))
2.flatten()
t5.flatten()
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
四.数组的计算
4.1操作每个数
1.加上某个数
t5
t5+3
# array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
# array([[[ 3, 4, 5, 6],
[ 7, 8, 9, 10],
[11, 12, 13, 14]],
[[15, 16, 17, 18],
[19, 20, 21, 22],
[23, 24, 25, 26]]])
2.两个数组操作
数组类型要一致
t5 = np.arange(25,49).reshape((4,6))
t5
t6 = np.arange(100,124).reshape((4,6))
t6
t5+t6
结果
array([[25, 26, 27, 28, 29, 30],
[31, 32, 33, 34, 35, 36],
[37, 38, 39, 40, 41, 42],
[43, 44, 45, 46, 47, 48]])
array([[100, 101, 102, 103, 104, 105],
[106, 107, 108, 109, 110, 111],
[112, 113, 114, 115, 116, 117],
[118, 119, 120, 121, 122, 123]])
array([[125, 127, 129, 131, 133, 135],
[137, 139, 141, 143, 145, 147],
[149, 151, 153, 155, 157, 159],
[161, 163, 165, 167, 169, 171]])
4.2操作行与列
广播原则:
shape为(3,3,2)可以与shape为(3,2)的运算
1.操作每一行
就是每一列减去那个一维数组
t5 = np.arange(0,24).reshape(4,6)
t5
t7 = np.arange(0,6)
t7
t5 - t7
结果
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
array([0, 1, 2, 3, 4, 5])
array([[ 0, 0, 0, 0, 0, 0],
[ 6, 6, 6, 6, 6, 6],
[12, 12, 12, 12, 12, 12],
[18, 18, 18, 18, 18, 18]])
2.操作每一列
每一列减去这个列
t5 = np.arange(0,24).reshape(4,6)
t5
t8 = np.arange(4).reshape((4,1))
t8
t5-t8
结果
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
array([[0],
[1],
[2],
[3]])
array([[ 0, 1, 2, 3, 4, 5],
[ 5, 6, 7, 8, 9, 10],
[10, 11, 12, 13, 14, 15],
[15, 16, 17, 18, 19, 20]])
4.3矩阵的转置
t2.transpose()
t2.T
t2.swapaxes(1,0)
五.轴
5.1定义
轴通常有0,1,2轴
一维数组 | 有0轴 |
---|---|
二维数组 | 有0,1轴 |
三维数组 | 有0,1,2轴 |
5.2二维数组
5.3三维数组
以上是关于numpy-01-数组创建与计算的主要内容,如果未能解决你的问题,请参考以下文章