创建np一维数组arr1:[1,2,3,4]和二维数组arr2:[1 2 3;4 5 6],分别查看arr1和arr2的维数,形状,元素个数及数据类型Python
时间: 2024-09-13 11:17:09 浏览: 76
在Python中,我们可以使用NumPy库来创建和操作数组。以下是如何创建一维数组`arr1`和二维数组`arr2`并查看它们的属性:
**创建一维数组arr1:**
```python
import numpy as np
# 创建一维数组 arr1
arr1 = np.array([1, 2, 3, 4])
```
**查看arr1的属性:**
```python
# 维度
arr1.ndim # 返回:1 (因为是一维数组)
# 形状
arr1.shape # 返回:(4,) 因为它有4个元素构成的一维数组
# 元素个数
len(arr1) # 返回:4
# 数据类型
arr1.dtype # 返回:int64 或者 np.int64,具体取决于数值的大小范围
```
**创建二维数组arr2:**
```python
# 创建二维数组 arr2
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
```
**查看arr2的属性:**
```python
# 维度
arr2.ndim # 返回:2 (因为它是二维数组)
# 形状
arr2.shape # 返回:(2, 3) 因为它有两个行,三个列
# 元素个数
arr2.size # 返回:6 (总共有2*3=6个元素)
# 数据类型
arr2.dtype # 类似于arr1,返回:int64 或者 np.int64
```
相关问题
NumPy一维数组索引: 一维数组切片: 二维数组索引: 二维数组切片(取第 2 列):二维数组切片(取第 2,3 行):
一维数组索引:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[0]) # 输出:1
print(arr[2]) # 输出:3
```
一维数组切片:
```python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4]) # 输出:[2 3 4]
```
二维数组索引:
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[0, 0]) # 输出:1
print(arr[1, 2]) # 输出:6
```
二维数组切片(取第 2 列):
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[:, 1]) # 输出:[2 5 8]
```
二维数组切片(取第 2,3 行):
```python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1:3, :]) # 输出:[[4 5 6] [7 8 9]]
```
# 一个用来切片的类 def replace_data(data, x, height, weight): # 每height * weight行提取出来作为一个二维数组 arr_reshaped = data.reshape((-1, height * weight, x)) # 将每个二维数组转换成三维数组 arr_3d = [] # 新建一个空的三维数组 # 将提取出的二维数组分别转换并按顺序输入到这个空的三维数组里面 for a in range(arr_reshaped.shape[0]): arr_3d.append(np.reshape(arr_reshaped[a], (height, weight, x))) # 将每个三维数组转换成x * h * w的三维数组 arr_x_h_w = [] for b in range(len(arr_3d)): arr_x_h_w.append(np.transpose(arr_3d[b], (2, 0, 1))) return arr_x_h_w这段代码的功能详解
这个类中的函数 `replace_data()` 的功能是将一个一维数组 `data` 切片成多个二维数组,每个二维数组有 `height` 行和 `weight` 列,并将这些二维数组转换成三维数组,最后将每个三维数组转换成 `x * height * weight` 的三维数组,最终返回一个由这些三维数组组成的列表。
具体实现步骤如下:
1. 将一维数组 `data` 重新排列为一个二维数组,其中每个二维数组有 `height * weight` 行和 `x` 列,即 `arr_reshaped = data.reshape((-1, height * weight, x))`。
2. 将每个二维数组转换成一个三维数组,其中这个三维数组有 `height` 行、`weight` 列和 `x` 个通道。为此,需要遍历每个切片,将其从一维数组形式转换为二维数组形式,然后将其转换为三维数组形式。这个过程通过以下代码实现:
```
arr_3d = [] # 新建一个空的三维数组
for a in range(arr_reshaped.shape[0]):
arr_3d.append(np.reshape(arr_reshaped[a], (height, weight, x)))
```
3. 将每个三维数组转换为 `x * height * weight` 的三维数组,即将每个三维数组的通道维度放到最前面。这个过程通过以下代码实现:
```
arr_x_h_w = []
for b in range(len(arr_3d)):
arr_x_h_w.append(np.transpose(arr_3d[b], (2, 0, 1)))
```
4. 返回由这些 `x * height * weight` 的三维数组组成的列表,即 `arr_x_h_w`。
阅读全文