gpt4 book ai didi

python - 将连续的行附加到 Python 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:29 25 4
gpt4 key购买 nike

我想创建一个二维 numpy 数组。

我试过这个:

import numpy as np

result = np.empty
np.append(result, [1, 2, 3])
np.append(result, [4, 5, 9])

1.数组的维度是:(2, 3)。我怎样才能得到它们?

我试过:

print(np.shape(result))
print(np.size(result))

但这会打印出:

()
1

2.如何访问数组中的特定元素?

我试过这个:

print(result.item((1, 2)))

但这会返回:

Traceback (most recent call last):
File "python", line 10, in <module>
AttributeError: 'builtin_function_or_method' object has no attribute 'item'

最佳答案

理想情况下,您应该在交互式 session 中测试此类代码,您可以在交互式 session 中轻松获得有关这些步骤的更多信息。我将在 ipython 中进行说明。

In [1]: result = np.empty
In [2]: result
Out[2]: <function numpy.core.multiarray.empty>

这是一个函数,不是数组。正确的用法是 result = np.empty((3,))。也就是说,您必须使用所需的大小参数调用该函数。

In [3]: np.append(result, [1,2,3])
Out[3]: array([<built-in function empty>, 1, 2, 3], dtype=object)

append 已创建一个数组,但请查看内容 - 函数和 3 个数字。和 dtypenp.append 也返回一个结果。它不能就地工作。

In [4]: result.item((1,2))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-51f2b4be4f43> in <module>()
----> 1 result.item((1,2))

AttributeError: 'builtin_function_or_method' object has no attribute 'item'

您的错误告诉我们 result 是一个函数,而不是数组。与您在开始时设置的相同。

In [5]: np.shape(result)
Out[5]: ()
In [6]: np.array(result)
Out[6]: array(<built-in function empty>, dtype=object)

在这种情况下,np.shapenp.size 的函数版本不是诊断性的,因为它们首先将 result 转换为大批。 result.shape 会报错。

潜在的问题是您使用的是列表模型

result = []
result.append([1,2,3])
result.append([4,5,6])

但是数组 append 被错误命名和误用。它只是 np.concatenate 的前端。如果你不理解concatenate,你可能不会正确使用np.append。事实上,我认为您根本不应该使用 np.append


使用追加的正确方法是从一个大小为 0 维的数组开始,然后重用结果:

In [7]: result = np.empty((0,3),int)
In [8]: result
Out[8]: array([], shape=(0, 3), dtype=int32)
In [9]: result = np.append(result,[1,2,3])
In [10]: result
Out[10]: array([1, 2, 3])
In [11]: result = np.append(result,[4,5,6])
In [12]: result
Out[12]: array([1, 2, 3, 4, 5, 6])

但也许这不是您想要的?甚至我都在滥用 append

回到绘图板:

In [15]: result = []
In [16]: result.append([1,2,3])
In [17]: result.append([4,5,6])
In [18]: result
Out[18]: [[1, 2, 3], [4, 5, 6]]
In [19]: result = np.array(result)
In [20]: result
Out[20]:
array([[1, 2, 3],
[4, 5, 6]])

对于真正的数组,您的 item 表达式有效,但通常我们使用 [] 索引:

In [21]: result[1,2]
Out[21]: 6
In [22]: result.item((1,2))
Out[22]: 6

np.append 的源代码(注意 np.concatenate 的使用):

In [23]: np.source(np.append)
In file: /usr/local/lib/python3.5/dist-packages/numpy/lib/function_base.py

def append(arr, values, axis=None):
"""
...
"""
arr = asanyarray(arr)
if axis is None:
if arr.ndim != 1:
arr = arr.ravel()
values = ravel(values)
axis = arr.ndim-1
return concatenate((arr, values), axis=axis)

关于python - 将连续的行附加到 Python 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44872454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com