[英]np.dot returns nan for Dataframe(float64) and np.ndarray(fload64)
I have a squared dataframe containing over 505 rows and columns (a 505x505 matrix)我有一个平方的 dataframe 包含超过 505 行和列(505x505 矩阵)
which I need to dot
multiply to an ndarray from numpy (505 items).我需要从 numpy(505 项)
dot
乘到一个 ndarray。
the problem is that the result is an ndarray with 505 items, full of nan
.问题是结果是一个包含 505 个项目的 ndarray,充满了
nan
。
I tried replicating it on a separate notebook, but I wasn't able to.我尝试在单独的笔记本上复制它,但我无法做到。
in在
print('df ', df)
print('info ', df.info())
result = np.dot(df, np.random.rand(505))
print('result.shape: ', result.shape)
print('result ', result)
out出去
df A AAL AAP AAPL ABBV ABC ABMD \
A 0.093188 0.072021 0.048887 0.067503 0.047795 0.052311 0.051706
AAL 0.072021 0.547093 0.099290 0.069475 0.045120 0.066275 0.065950
AAP 0.048887 0.099290 0.143932 0.055590 0.043934 0.059230 0.041979
AAPL 0.067503 0.069475 0.055590 0.140050 0.051688 0.054113 0.060444
ABBV 0.047795 0.045120 0.043934 0.051688 0.096598 0.047673 0.032663
... ... ... ... ... ... ... ...
YUM 0.042185 0.095983 0.058538 0.052228 0.036547 0.046676 0.031293
ZBH 0.054474 0.127670 0.057043 0.054673 0.046718 0.054718 0.053090
ZBRA 0.079731 0.100945 0.064364 0.091272 0.054140 0.062255 0.066586
ZION 0.061233 0.176829 0.075915 0.048804 0.044935 0.066857 0.044151
ZTS 0.060966 0.052413 0.054156 0.069211 0.047445 0.054443 0.041018
XRAY XYL YUM ZBH ZBRA ZION ZTS
A 0.053152 0.064197 0.042185 0.054474 0.079731 0.061233 0.060966
AAL 0.110541 0.125551 0.095983 0.127670 0.100945 0.176829 0.052413
AAP 0.064716 0.071780 0.058538 0.057043 0.064364 0.075915 0.054156
AAPL 0.047973 0.067265 0.052228 0.054673 0.091272 0.048804 0.069211
ABBV 0.049469 0.043552 0.036547 0.046718 0.054140 0.044935 0.047445
... ... ... ... ... ... ... ...
YUM 0.060310 0.059523 0.098728 0.069827 0.051222 0.057302 0.057192
ZBH 0.084555 0.068429 0.069827 0.136291 0.070115 0.089688 0.058264
ZBRA 0.068271 0.085070 0.051222 0.070115 0.185910 0.087744 0.069007
ZION 0.099294 0.098861 0.057302 0.089688 0.087744 0.204927 0.040132
ZTS 0.052646 0.057712 0.057192 0.058264 0.069007 0.040132 0.095019
[505 rows x 505 columns]
<class 'pandas.core.frame.DataFrame'>
Index: 505 entries, A to ZTS
Columns: 505 entries, A to ZTS
dtypes: float64(505)
memory usage: 2.0+ MB
info None
result.shape: (505,)
result [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan]
In this situation you should use DataFrame.dot在这种情况下,您应该使用DataFrame.dot
import pandas as pd;
import numpy as np
df = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five'])
other = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five']).transpose()
Notice that the indices of the second DataFrame
must match the rows of the first, then you can multiply them请注意,第二个
DataFrame
的索引必须与第一个的行匹配,然后您可以将它们相乘
df.dot(other)
# or
other.dot(df)
Remember that the matrix multiplication is not commutative.请记住,矩阵乘法不是可交换的。
If you do df.dot(other)
it will return a dataframe with the indices of df and the columns of other
, if you call it with a numpy array it will return a dataframe with columns counting [0,1,2,...]如果您执行
df.dot(other)
,它将返回一个 dataframe ,其中包含 df 的索引和other
的列,如果您使用 numpy 数组调用它,它将返回一个 Z6A8064B5DF47945,5,5,27.DZ 和计数。 .]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.