ada*_*key 5 python arrays numpy
假设我有一个c构造如下的 numpy 数组:
a = np.zeros((2,4))
b = np.zeros((2,8))
c = np.array([a,b])
Run Code Online (Sandbox Code Playgroud)
我本来希望c.shape是(2,1)或者(2,)但它是(2,2)。此外,我想要做的是将一列向量连接到 上a,但通过c以下方式访问它:
c0 = c[0] # I would have expected this to be 'a'
np.concatenate((np.ones((c0.shape[0], 1)), c0), axis=1)
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为c[0]不符合a我的预期,我得到
ValueError: all the input arrays must have same number of dimensions
Run Code Online (Sandbox Code Playgroud)
我需要某种方法来拥有一个数组(或列表),每个对组件都是一个 numpy 数组,我需要访问对中的第一个数组,以便将一个列向量连接到它。我的应用程序是机器学习,我的数据将以所描述的格式发送给我,但我需要在开始时修改数据,以便向其中添加偏差元素。
编辑:我使用的是 Python 2.7 和 Numpy 1.8.2
我相信你想要使用的是hstack:
a = np.zeros((2,4)) # 4 column vectors of length 2
b = np.ones((2,1)) # 1 column vector of length 2
c = np.hstack((a, b))
print c
# [[ 0. 0. 0. 0. 1.]
# [ 0. 0. 0. 0. 1.]]
Run Code Online (Sandbox Code Playgroud)
a关于连接你的and 的问题b:这不能以明显的方式完成。串联意味着在附加维度中相互堆叠。不过,您的数据彼此不匹配......
一般来说,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.]]
Run Code Online (Sandbox Code Playgroud)
但请注意,如果a已经包含常量列,则不会添加额外的列:
In [126]: sm.add_constant(np.zeros((2,4)))
Out[126]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9821 次 |
| 最近记录: |