gpt4 book ai didi

python - 嵌套的 Python numpy 数组维度混淆

转载 作者:太空狗 更新时间:2023-10-30 02:19:13 25 4
gpt4 key购买 nike

假设我有一个 numpy 数组 c 构造如下:

a = np.zeros((2,4))
b = np.zeros((2,8))
c = np.array([a,b])

我希望 c.shape(2,1)(2,) 但它是 (2,2)。此外,我想要做的是将 1 的列向量连接到 a 上,但是通过 c 以下列方式访问它:

c0 = c[0] # I would have expected this to be 'a'
np.concatenate((np.ones((c0.shape[0], 1)), c0), axis=1)

这当然是行不通的,因为 c[0] 并不像我预期的那样等于 a,我得到了

ValueError: all the input arrays must have same number of dimensions

我需要一些方法来获得成对的数组(或列表),每一对的组成部分都是一个 numpy 数组,我需要访问该对中的第一个数组,以便将 1 的列向量连接到它。我的应用程序是机器学习,我的数据将以描述的格式传给我,但我需要在开始时修改数据以向其添加偏差元素。

编辑:我正在使用 Python 2.7 和 Numpy 1.8.2

最佳答案

通常,NumPy 数组的嵌套 NumPy 数组不是很有用。如果您使用 NumPy 来提高速度,通常最好坚持使用 NumPy 数组具有同质的基本数字数据类型。

将两个项目放入数据结构中,使 c[0] 返回第一个项目,和 c[1] 第二个列表(或元组)如 c = [a, b] 就可以了。


顺便说一句,如果您使用的是statemodels 包,那么您可以使用sm.add_constant 添加一个常量列:

import numpy as np
import statsmodels.api as sm

a = np.random.randint(10, size=(2,4))
print(a)
# [[2 3 9 6]
# [0 2 1 1]]
print(sm.add_constant(a))
[[ 1. 2. 3. 9. 6.]
[ 1. 0. 2. 1. 1.]]

但是请注意,如果 a 已经包含常量列,则不会添加额外的列:

In [126]: sm.add_constant(np.zeros((2,4)))
Out[126]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])

关于python - 嵌套的 Python numpy 数组维度混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493109/

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