array.resize可以吗,怎么做
时间: 2024-03-22 21:40:20 浏览: 7
是的,`array.resize()`函数也可以用来改变数组的形状。使用该函数可以直接改变原数组的形状,而不需要创建一个新的数组。示例如下:
```python
import numpy as np
# 创建一个n*1的np.array
arr = np.array([[1], [2], [3]])
# 使用array.resize()函数将其转换成1*n的形式
arr.resize((1, 3))
print(arr)
```
输出结果为:
```
[[1 2 3]]
```
其中,`array.resize()`函数中的参数为转换后的形状。由于改变形状后的数组元素个数不能改变,因此,`arr.resize((1, 3))`表示转换后的np.array为1行、3列,即原数组中的3个元素排成1行。注意,`array.resize()`函数会直接修改原数组,因此不需要像`np.reshape()`函数一样将返回值赋值给一个新的变量。
相关问题
skin_df['image'] = skin_df['path'].map(lambda x: np.asarray(Image.open(x).resize((100,75))))
### 回答1:
这段代码的作用是将数据集中的图像文件读入,并将其调整为 100x75 的大小,然后将其转换为 numpy 数组,并将其存储在名为 "image" 的新列中。具体来说,这个 lambda 表达式将每个图像文件的路径作为输入,并使用 Pillow 库中的 Image.open() 函数打开图像文件。然后,使用 resize() 方法将图像调整为指定大小,并使用 asarray() 函数将其转换为 numpy 数组。最后,将结果存储到 "image" 列中,以便后续使用。
### 回答2:
这段代码的作用是将`skin_df`数据框中的`path`列中的图像文件路径读入,并将每个图像调整大小为100x75像素,然后将其作为`image`列的值存储在`skin_df`中。
首先,`skin_df['path']`是指数据框`skin_df`中的`path`列,该列包含图像文件的路径信息。
接下来,`lambda x: np.asarray(Image.open(x).resize((100,75)))`是一个匿名函数,利用`x`作为输入参数,它的作用是打开路径`x`对应的图像文件,然后调整图像的大小为100x75像素,然后将其转换为NumPy数组来表示。
最后,`skin_df['path'].map()`函数会遍历`path`列中的所有路径,并对每个路径执行`lambda`函数中的操作,然后将结果存储在新的`image`列中。
总之,这段代码的作用是将图像文件路径转换为调整大小后的图像数组,并将其存储在`skin_df`数据框中的`image`列中。
### 回答3:
这行代码是使用Python中的Pandas库对数据集中的图片进行预处理的操作。代码首先使用Pandas库中的DataFrame对象skin_df的"path"列,将每个图片的路径作为输入。然后通过lambda函数调用图片处理库PIL中的Image.open()函数打开图片,并通过resize()函数将图片的大小调整为100x75像素。最后,使用NumPy库的asarray()函数将处理后的图片转换为数组,并将结果赋值给DataFrame对象skin_df的新列"image"。
这行代码的目的是将图片转换为数组形式,并将其保存在DataFrame对象的"image"列中。这样做的好处是可以方便地对图像数据进行处理和分析,例如可以使用各种机器学习算法对图像进行分类、检测和识别等任务。
需要注意的是,该代码的执行需要确保所使用的Python环境中已经安装了Pandas、NumPy和PIL库,同时也需要保证所使用的数据集中的路径正确,以便能够成功打开和处理图片。
def pre_img(image): myimage = image.convert('L') # 转换成灰度图 myimage = np.array(myimage) # print(myimage.shape) ret, img1 = cv.threshold(myimage, 100, 255, cv.THRESH_BINARY_INV) # cv.namedWindow('img1',0) # cv.resizeWindow('img1',600,600) # cv.imshow('img1',img1) # print(type(img1)) # print(img1.shape) # print(img1.size) # cv.waitKey(2) kernel1 = np.ones((10, 10), np.uint8) # 做一次膨胀 img2 = cv.dilate(img1, kernel1) # cv.namedWindow('img2', 0) # cv.resizeWindow('img2', 600, 600) # cv.imshow('img2', img2) '剔除小连通域' contours, hierarchy = cv.findContours(img2, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE) # print(len(contours),hierarchy) for i in range(len(contours)): area = cv.contourArea(contours[i]) if area < 150: # '设定连通域最小阈值,小于该值被清理' cv.drawContours(img2, [contours[i]], 0, 0, -1) # cv2.imwrite('img2.jpg', img2) # import pdb;pdb.set_trace() img5 = cv.resize(img2, (28, 28)) # cv.namedWindow('img5', 0) # cv.resizeWindow('img5', 600, 600) # cv.imshow('img5', img5) # cv2.imwrite('img5.jpg', img5) # import pdb;pdb.set_trace() return img5 img_pre = pre_img(img) # # cv.imshow('img_pre', img_pre) # 将数据类型由uint8转为float32 img = img_pre.astype(np.float32) # 图片数据归一化 img = img / 255 改成单个代码可以运行
以下是整合后的代码:
```
import cv2 as cv
import numpy as np
def pre_img(image):
myimage = image.convert('L') # 转换成灰度图
myimage = np.array(myimage)
ret, img1 = cv.threshold(myimage, 100, 255, cv.THRESH_BINARY_INV)
kernel1 = np.ones((10, 10), np.uint8)
img2 = cv.dilate(img1, kernel1)
contours, hierarchy = cv.findContours(img2, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
for i in range(len(contours)):
area = cv.contourArea(contours[i])
if area < 150:
cv.drawContours(img2, [contours[i]], 0, 0, -1)
img5 = cv.resize(img2, (28, 28))
return img5
img = cv.imread('example.jpg') # 读入图片
img_pre = pre_img(img)
img = img_pre.astype(np.float32) / 255
cv.imshow('img', img) # 显示图片
cv.waitKey(0) # 等待按键
cv.destroyAllWindows() # 关闭所有窗口
```
注意需要自行替换掉 `example.jpg` 为你需要处理的图片的路径。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)