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-数组创建与计算的主要内容,如果未能解决你的问题,请参考以下文章

片段中的按钮自定义视图

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

如何创建片段以重复变量编号中的代码行

有没有办法使用相同的布局动态创建片段并向它们显示数据?

在android中动态创建选项卡并使用传入的参数加载片段