使用此数据框,dff:

   A  B
0  0  a
1  1  a
2  2  b
3  3  b
4  4  b
5  5  b
6  6  c
7  7  c

我了解如何 len(dff) == 8
但是,我不明白以下答案:
dff['counts'] = np.arange(len(dff))

这是
     A  B  counts
  0  0  a       0
  1  1  a       1
  2  2  b       2
  3  3  b       3
  4  4  b       4
  5  5  b       5
  6  6  c       6
  7  7  c       7
dff['counts'] 每行不应该是 8 吗?引擎盖下发生了什么?

最佳答案

您似乎误解了 np.arange 的作用:

In [32]:

np.arange(8)
Out[32]:
array([0, 1, 2, 3, 4, 5, 6, 7])

这里 df 的长度用于设置 stop 参数:

从文档:
numpy.arange([start, ]stop, [step, ]dtype=None)
Return evenly spaced values within a given interval.

Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments the function is equivalent to the Python built-in range function, but returns an ndarray rather than a list.

When using a non-integer step, such as 0.1, the results will often not be consistent. It is better to use linspace for these cases.

Parameters:
start : number, optional
Start of interval. The interval includes this value. The default start value is 0.
stop : number
End of interval. The interval does not include this value, except in some cases where step is not an integer and floating point round-off affects the length of out.
step : number, optional
Spacing between values. For any output out, this is the distance between two adjacent values, out[i+1] - out[i]. The default step size is 1. If step is specified, start must also be given.
dtype : dtype
The type of the output array. If dtype is not given, infer the data type from the other input arguments.
Returns:
arange : ndarray
Array of evenly spaced values.
For floating point arguments, the length of the result is ceil((stop - start)/step). Because of floating point overflow, this rule may result in the last element of out being greater than stop.

如果您想将每一行设置为相同的值,您可以这样做
In [34]:

dff['counts'] = len(dff)
dff
Out[34]:
   A  B  counts
0  0  a       8
1  1  a       8
2  2  b       8
3  3  b       8
4  4  b       8
5  5  b       8
6  6  c       8
7  7  c       8

关于python - len() 与 arange() 的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32190009/

10-12 21:18