numpy中.flat的意义是什么?

Dav*_*son 2 python arrays numpy

这两个代码有何不同?或者根本没有这样的差异?

import numpy as np
a = np.array([1,2,4,5,5,6])
for item in a.flat:
    print(item)   
Run Code Online (Sandbox Code Playgroud)

要么

import numpy as np
a = np.array([1,2,4,5,5,6])
for i in a:
    print(i)
Run Code Online (Sandbox Code Playgroud)

两者给出了相同的结果

1
2
4
5
5
6
Run Code Online (Sandbox Code Playgroud)

vic*_*tor 7

该物业.flat将扁平化阵列.https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flat.html

np.array([[1], [2], [3], [4], [5]]).flat
>[1, 2, 3, 4, 5]

np.array([[[[[1, 2, 3, 4, 5]]]]]).flat
>[1, 2, 3, 4, 5]

np.array([1, 2, 3, 4, 5]).flat
>[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

因为您使用的是已经平坦的数组,所以两段代码的输出都是相同的.

试试这个:

import numpy as np
a = np.array([[1,2,4],[5,5,6]])
for item in a.flat:
    print(item)

>1
>2
>4
>5
>5
>6


import numpy as np
a = np.array([[1,2,4],[5,5,6]])
for i in a:
    print(i)

>[1 2 4]
>[5 5 6]
Run Code Online (Sandbox Code Playgroud)

  • 你的`a = np.array([1,2,4,[5,5,6]])`给了我一个`设置一个带有序列`错误的数组元素.`np.array([[1],[2],[3],[4,[5]]])`是1d对象数组.`flat`并没有改变这一点. (2认同)