# apply function along axis
flag = np.apply_along_axis(lambda x: x <= 10, 1, df.values)
print(flag)
[[ True True]
[ True True]
[ True True]
[ True True]
[ True True]
[False False]
[False False]
[False False]
[False False]
[False False]]
# split the True/False in separate arrays
v1 = df.values[flag].reshape(-1, 2)
v2 = df.values[~flag].reshape(-1, 2)
print(v1)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10]])
print(v2)
array([[11, 12],
[13, 14],
[15, 16],
[17, 18],
[19, 20]])
# simply join the data and paste the columns
v3 = np.hstack([v1, v2])
v1 = np.apply_along_axis(lambda x: str(x[0])+str(x[2]), 1, v3)
v2 = np.apply_along_axis(lambda x: str(x[1])+str(x[3]), 1, v3)
df = pd.DataFrame({'odd-odd': v1, 'even-even': v2})
print(df)
odd-odd even-even
0 111 212
1 313 414
2 515 616
3 717 818
4 919 102
高于平均值user@localhost:~/docker-pyzmq$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpinepyzmq_raw latest fd24a753f505 2 minutes ago 23.9MB
<none> <none> 3f763de0fb0b 7 minutes ago 23.9MB
alpinepyzmq_small latest c7a1f42d0bfd 14 minutes ago 94.8MB
alpinepyzmq latest 5be9ed0fcbcb 17 minutes ago 317MB
<none> <none> 97aa31fe216a 19 minutes ago 317MB
<none> <none> b167c481edc2 22 minutes ago 338MB
<none> <none> fe8504847607 29 minutes ago 304MB
<none> <none> 5b845a00f4d9 32 minutes ago 79.5MB
<none> <none> 2d6926b0c665 32 minutes ago 79.5MB
的输出是否可以在计算机内部运行并且重量仅为23.9mb?还是这个大小取决于其他图层?如果是这样,我如何找出整个图像尺寸?
答案 0 :(得分:1)
文档可以帮助回答这个问题,
SIZE
是图片及其所有父图片占用的交流空间。这也是
在此注意:如果图像具有多个存储库名称或标签,则将多次列出该图像。该单个图像(通过其匹配的IMAGE ID
可以识别)只用完一次列出的SIZE
。
答案 1 :(得分:1)
是否可以在alp内部运行高于alpinepyzmq_raw的输出 电脑,它的重量仅为23.9mb?
图像大小和容器大小是两个不同的东西。
图片大小:
执行docker image ls
时,列大小不一定是图像的大小,因为那是当前图像+所有这些父图像的大小:
SIZE是图像及其所有空间占用的累积空间 父图像。 Ť 23.9
对于没有父级的基本图像(例如Alpine),您可以考虑图像尺寸。
在docker中,父映像不会在每个子映像中合并,而是存储在不同的层中以共享。
要了解图像的实际尺寸(不包括父尺寸),请使用docker history IMAGE
。
容器尺寸:
容器尺寸不严格等于图像尺寸。
此外,容器同时使用内存(ram)和磁盘。
To know disk occupation大小:
docker system df
这确实呼应了著名的df
linux command,该磁盘显示了磁盘上的已用/可用空间。
答案 2 :(得分:1)
在docker中,映像是使用dockerfile创建的。每个图像由多层组成。每层对应于dockerfile中的特定指令。 Docker使用联合文件系统将这些层安装在彼此之上。因此,您可以将图像视为构建在多个只读层(UFS)之上的最后一层。您可以通过docker image inspect -f '{{.RootFS.Layers}}' <image>
查看docker镜像所基于的图层。
通常,您想使图像尺寸尽可能小,因此在您的dockerfile中广泛使用&&
。例如:-
您将更喜欢
From Ubuntu
RUN aptg-get update && apt-get install vim
而不是
From Ubuntu
RUN apt-get update
RUN apt-get install vim
从docker 1.10开始,RUN
,ADD
和COPY
语句为图像添加了一个新层。
此外,您还应该使用多阶段构建,其中可以在同一dockerfile中使用多个基础,并且每个构建都开始新的构建阶段。这样,您就可以在最终图像中保留所有不需要的内容。
上面输出中显示的图像大小是最终图像大小,是的,您可以在容器中运行此图像,但不是运行此图像的容器的最终大小。从图像运行容器时,实际上是在容器内创建该图像的读写副本。这是容器层,允许修改图像的整个副本。因此,您的容器可能会变大。您可以使用docker system df -v