来自Matlab/Octave的背景,我一直在努力学习numpy。一件让我一次又一次地被绊倒的事情是向量和多维数组之间的区别。对于这个问题,我会给出一个具体的问题,但是如果有人也能解释一下numpy中一维数组背后的更一般的图片,为什么你首先想要它们,如何避免在混合单维数组和多维数组时遇到麻烦,等等,我会非常感激。总之,问题是:
我有一个叫做X的二维数组:
X = numpy.arange(10).reshape(2,5)
我想把X的最后一列存储成另一个二维数组(也就是一个列向量),叫做Y。我唯一能想到的方法是:
Y = numpy.atleast_2d(X[:,4]).T
但我不喜欢这样有几个
我有一个名为check_sum的函数,它将一个二维数组的所有元素相加。 Grid是一个二维数组,grid_shape是1024x1024。 我正在尝试使用numpy.matrix.sum函数,但在多次尝试之后,我不知道如何实现它,它总是给我另一个值。 def check_sum(grid):
xmax, ymax = grid_shape
s=0
for i in range(xmax):
for j in range(ymax):
s += grid[i][j]
return s
我有一个二维Numpy数组,我想将np.bincount()应用于矩阵A的每一列,以生成由原始矩阵B的每一列的二进制数组成的另一个二维数组A。
我的问题是np.bincount()是一个类似于一维数组的函数。例如,它不是像B = A.max(axis=1)那样的数组方法。
除了讨厌的B循环之外,有没有更好的方法来生成这个for数组呢?
import numpy as np
states = 4
rows = 8
cols = 4
A = np.random.randint(0,states,(rows,cols))
B = np.zeros((states,cols))
for x in
我有一个二维数组。我试图获得给定值的键/索引名。我该怎么做?我查看了PHP手册,他们建议进行迭代,但我不想迭代。有没有一种不用迭代的方法?
我想做一些类似的事情
$country = 'Algeria';
echo $iso_countries[$country]; //obviously this will throw an error since the index does not exist. It's just an example.
数组
$iso_countries = array
(
'AF' => 'Afghani
我有一个二维numpy数组FilteredOutput,它有2列和10001行,尽管行数是一个变量。
我正在尝试获取FilteredOutput的第二列,并使用它来填充一个新的一维Numpy数组,名为timeSeriesArray (使用):
timeSeriesArray = np.array(FilteredOutput[:,0])
但我收到了以下错误消息:
TypeError: list indices must be integers, not tuple
为什么?
注:我不确定这是否重复--请告诉我是否是(并结束问题)。
如果有一个一维NumPy数组vector,那么如果您编写表单的for循环:
for element in vector :
print(element)
结果将打印NumPy数组的每个元素。
如果有一个二维NumPy数组matrix,那么如果您编写表单的for循环:
for vector in matrix :
print(vector)
结果将打印二维NumPy数组的每一行,即打印一维NumPy数组,而不是单独打印数组的每个元素。
但是,如果将for循环写为:
import numpy
for element in n
目前,我对渐近有以下“问题”:
我有一个像M = matrix([pi*a, sin(1)*b])这样的符号表达式,我想要lambdify它并将其传递给数值优化器。问题是优化器需要该函数来输入/输出形状为(n,)而不是(n,1)的numpy数组。
现在,我已经能够通过以下代码(MWE)实现这一点:
import numpy as np
import sympy as sp
a, b = sp.symbols('a, b')
M = sp.Matrix([2*a, b])
f_tmp = sp.lambdify([[a,b]], M, 'numpy')
fun
是否有一个numpy函数来确保一维或二维数组成为列或行向量?
例如,我有以下任何一个向量/列表。将任何输入转换为列向量的最简单方法是什么?
x1 = np.array(range(5))
x2 = x1[np.newaxis, :]
x3 = x1[:, np.newaxis]
def ensureCol1D(x):
# The input is either a 0D list or 1D.
assert(len(x.shape)==1 or (len(x.shape)==2 and 1 in x.shape))
x = np.atleast_2d(x)
n
据我所知,一维数组是那些只有1列和任意多行的数组,反之亦然。
如果我运行这段代码:
import numpy as np
a = np.arange(10).reshape(1,10)
b = np.arange(10).reshape(10,1)
print(a.ndim, b.ndim)
它返回这两个数组都是二维数组。为什么?我知道这台电脑工作得很好。但是你能告诉我什么是一维数组吗?
结果是大小为300000的二维numpy数组
for i in range(np.size(results,0)):
if results[i][0]>=0.7:
count+=1
在这段python代码中,我花了0.7秒,但我在C++代码中运行它,它只用了不到0.07秒。
那么如何让这段python代码尽可能快呢?
我正在尝试将CSV数据集读取到一个二维numpy数组中,然后返回该数组。我仍然收到一个return none消息,并且不确定我解决这个问题的方法--我是numpy的新手。 明确地说,数据集包含两列和大约100行数据。我想创建一个数组,其中第一列数据是x坐标,第二列数据是y坐标。 import numpy as np
data = open("mydata.csv")
read = data.read()
def generatingArray(read):
for data in read:
dataPoints = np.array(read[
我有一个大的二维numpy数组a的字符(dtype='a1'),并希望找到始终包含相同字符的不变列。下面的代码可以工作,但是非常慢。
var_col = np.zeros(a.shape[1], dtype='bool')
for c in xrange(a.shape[1]):
if not all(a[:,c] == a[0,c]):
var_col[c] = True
这个问题有更快的解决办法吗?谢谢!