python中numpy数组形状和计算

1. numpy数组形状

数组可以理解为是矩阵,所以会涉及几行几列

import numpy as np
import random

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

在这段逻辑里,t1是个数组,输出结果后
在这里插入图片描述
(2, 3)表示的就是这个数组是一个2行3列的矩阵
在初始设置过数组形状后,还可以通过reshape进行形状的修改

import numpy as np
import random

#reshape修改形状
t2 = np.arange(12)
print(t2)
print(t2.shape)

t3 = t2.reshape((3,4))
print(t3)
print(t3.shape)

t3就是t2修改形状之后的数组
在这里插入图片描述
但需要注意的是,数组形状发生切换的前后,数组内元素数量不能发生变化,比如t2数组里有12个元素,那就可以按3行4列来改变,但不能按3行5列修改

2. numpy数组计算

2.1 数组与数字计算

数组可以和数字进行计算

import numpy as np
import random

#数组与数字进行计算
t1 = np.array([[1,2,3],[4,5,6]])
t2 = t1 + 2
print(t1)
print(t2)

在这里插入图片描述
其结果是原数组里的每一个元素都会加2,与加法类似,乘法也是将每个元素都乘一次

import numpy as np
import random

#数组与数字进行计算
t1 = np.array([[1,2,3],[4,5,6]])
t3 = t1 * 3
print(t1)
print(t3)

在这里插入图片描述

2.2 数组与数组计算

数组不仅可以和数字进行计算,也可以和数组进行计算

import numpy as np
import random

#数组与数字进行计算
t1 = np.array([[1,2,3],[4,5,6]])

#数组与数组进行计算
t4 = np.array([[1,2,3],[4,5,6]])
t5 = t1 * t4
print(t5)

在这里插入图片描述
可以看出来,是相同位置的元素进行相乘,需要注意的是,数组和数组之间的计算,需要两个数组形状相同

### PythonNumPy 数组形状及其操作 NumPy 是一种强大的库,用于处理多维数组矩阵。它提供了许多功能来创建、操作转换数组。以下是关于 `shape` `size` 的详细介绍。 #### 1. **NumPy 数组形状 (`shape`)** `shape` 属性返回一个表示数组维度的元组。这个属性描述了数组在各个轴上的长度。例如,对于二维数组来说,第一个数代表行的数量,第二个数代表列的数量[^1]。 ```python import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(f"Array Shape: {arr.shape}") # 输出 Array Shape: (2, 3) ``` 上述代码中的数组是一个具有两行三列的二维数组,因此其形状为 `(2, 3)`[^2]。 #### 2. **NumPy 数组的大小 (`size`)** `size` 属性返回数组中元素的总数。这等于所有维度乘积的结果。无论数组有多少维,`size` 都会给出总的元素数量[^3]。 ```python arr = np.array([[1, 2, 3], [4, 5, 6]]) print(f"Array Size: {arr.size}") # 输出 Array Size: 6 ``` 在这个例子中,尽管数组有两行三列,但它总共包含六个元素,所以 `size` 返回的是 `6`。 #### 3. **修改数组形状的方法** ##### a. 使用 `.reshape()` `.reshape()` 方法可以更改数组形状而不改变其数据。新形状必须能够容纳原始数组中的所有元素[^4]。 ```python arr = np.array([1, 2, 3, 4, 5, 6]) new_arr = arr.reshape((2, 3)) print(new_arr) # 输出: # [[1 2 3] # [4 5 6]] ``` ##### b. 使用 `-1` 自动推导尺寸 当调用 `.reshape()` 时,可以通过指定其中一个维度为 `-1` 来让 NumPy 推断该维度的大小。 ```python arr = np.array([1, 2, 3, 4, 5, 6]) reshaped_array = arr.reshape((2, -1)) print(reshaped_array) # 输出: # [[1 2 3] # [4 5 6]] ``` 这里指定了两个行,而列被自动设置为适合剩余元素的数量。 #### 4. **广播机制与形状匹配** 广播是一种允许不同形状数组之间执行算术运算的技术。只要满足某些条件(如某一维度相等或其中一个是 `1`),较小的数组会被扩展到较大的数组形状以便于计算。 ```python a = np.array([[1, 2, 3], [4, 5, 6]]) # 形状为 (2, 3) b = np.array([10]) # 单一值也会被视为形状为 (1,) 或更高维度上全为 1 的数组 result = a + b # 广播发生在这里 print(result) # 输出: # [[11 12 13] # [14 15 16]] ``` 以上展示了如何通过广播将单个值加到整个数组上。 --- ### 总结 - `shape` 提供了数组各维度的具体信息。 - `size` 给出了数组总共有多少个元素。 - 可以利用 `.reshape()` 改变数组的形式,并支持部分参数由程序自行决定。 - 广播使得即使形状不完全一致也能完成数学运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟意昶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值