【问题标题】:Is there a way to confirm all the input array dimensions in numpy?有没有办法在 numpy 中确认所有输入数组的维度?
【发布时间】:2015-07-09 12:36:49
【问题描述】:

我正在运行 Python 2.7.9。我有两个 numpy 数组(100000 x 142 和 100000 x 20),我想将它们连接成 1、100000 x 162 数组。

以下是我正在运行的代码:

import numpy as np
import pandas as pd

def ratingtrueup():
    actones = np.ones((100000, 20), dtype='f8', order='C')
    actualhhdata = np.array(pd.read_csv
                           ('C:/Users/Desktop/2015actualhhrating.csv', index_col=None, header=None, sep=','))
    projectedhhdata = np.array(pd.read_csv
                           ('C:/Users/Desktop/2015projectedhhrating.csv', index_col=None, header=None, sep=','))
    adjfctr = round(1 + ((actualhhdata.mean() - projectedhhdata.mean()) / projectedhhdata.mean()), 5)
    projectedhhdata = (adjfctr * projectedhhdata)
    actualhhdata = (actones * actualhhdata)
    end = np.concatenate((actualhhdata.T, projectedhhdata[:, 20:]), axis=1)
ratingtrueup()

我得到以下值错误:

文件 "C:/Users/PycharmProjects/TestProjects/M.py", 第 16 行,在 ratingtrueup end = np.concatenate([actualhhdata.T, projectionhhdata[:, 20:]], axis=1) ValueError: 除了 连接轴必须完全匹配

我已经确认两个数组都是“numpy.ndarry”。

有没有办法检查输入数组的尺寸,看看哪里出错了。

提前谢谢你。

【问题讨论】:

  • 可以使用属性ndim,如果要保证一定的维度np.atleast_1dnp.atleast_2dnp.atleast_3d
  • ndim 为您提供维数。你想要的形状。
  • 如果就在你做print actualhhdata.shape, projectedhhdata[:, 20:].shape的连接之前,它应该会清理干净。

标签: python arrays numpy


【解决方案1】:

我会在 concatenate 之前添加一个(临时)打印行:

actualhhdata = (actones * actualhhdata)
print(acutalhhdata.T.shape, projectedhhdata[:,20:].shape)
end = np.concatenate((actualhhdata.T, projectedhhdata[:, 20:]), axis=1)

对于更多的生产环境,您可能需要添加某种测试

例如

x,y=np.ones((100,20)),np.zeros((100,10))
assert x.shape[0]==y.shape[0], (x.shape,y.shape)
np.concatenate([x,y],axis=1).shape

【讨论】:

  • 这是完美的。您的建议帮助解决了我的问题。西雅图水手队谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2021-10-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2020-11-19
相关资源
最近更新 更多